2009-08-08 8 views
5

jestem migracji stronę internetową z ASP.NET MVC doco jest równoznaczne z „dosłownego” tag w ASP.NET MVC

ASP.NET

w witrynie asp.net istnieje wiele miejsc, gdzie mają " literalne "tagi i serwer generuje pęczek html i wstawia się w literalnym tagu.

co jest odpowiednikiem doign to w asp.net mvc. Czy powinienem to pokazać w ViewData?

Odpowiedz

10

Ekwiwalentem jest nie dokonywanie takich samych złych wyborów projektowych, jakie wykonał pierwotny deweloper.

Ale ponieważ żyjemy w realnym świecie, wrzucamy ich łańcuchy-które-zawierają-html do modelu prezentacji dla konkretnej strony, a następnie zapisujemy do strumienia odpowiedzi.

w modelu:

public class MyPageModel 
{ 
    public string HolyCrapItsHtml {get;set;} 
} 

W kontrolerze:

public ActionResult MyPage() 
{ 
    return View(new MyPageModel 
     {HolyCrapItsHtml = OldCode.GetHtmlICantBelieveIt()}); 
} 

A na stronie:

<div> 
    In the olden days, we'd concatenate our webpages together from strings like: 
    <%= Model.HolyCrapItsHtml %> 
</div> 
+0

dzięki za tę odpowiedź. czy możesz zaoferować alternatywne podejście, do którego mogę dążyć? – leora

+0

Zasadniczo to samo, z wyjątkiem zamiast łączenia swojego html w (z tym przykładem) OldCode.GethtmlICantBelieveIt, w kontrolerze gromadzisz dane, które składają się na treść tego html, umieszczasz je w modelach i renderujesz cały swój HTML w swoim widoku używając zawartości swojego modelu. Kilka minut na badanie MVC, a dostaniesz to. – Will

3

miałem ten sam problem. Nie przejmuj się MyPageModel, po prostu trzymaj się ViewData, ale zamiast dwukropka użyj równań.

<%= ViewData("SomeVarName") %> 
1

Jeśli używasz Razor, można wykonać następujące czynności, jeśli nie za pomocą silnie wpisany pomocników

@Model.YourVarName 

Jeśli pracujesz w silnie wpisany w widoku modelu, można użyć valuefor() pomocnika

@Html.ValueFor(m => m.YourVarName) 

Jeśli tylko masz kilka literałów, można umieścić je w ViewData, ale jeśli jesteś po prawdziwego modelu MVC, należy stworzyć model dla widoku z odpowiednich właściwościach. Biorąc pod uwagę, że portujesz z istniejącej strony ASP.NET, konfigurowanie nowego modelu dla każdego nowego widoku/strony może nieść ze sobą dużo kosztów, w takim przypadku włożyć go do ViewData.