2016-10-20 6 views
0

Ich bin neu in MVC. Jetzt lerne ich mit VS2010, ASP.NET MVC 4.<% %> funktioniert nicht in mvc4

<% %> funktioniert nicht für mich. Es ist langweilig für mich, @ zu verwenden.

Wenn ich großen Code mit Los if{} schreibe, dann <% wird nützlich sein. Können Sie mir bitte helfen, wie mit <% %>

ich so schreiben müssen:

The customer id is <%= Model.Id %> <br /> 

The customer Code is <%= Model.CustomerCode %> <br /> 

<% if (Model.Amount > 100) {%> 
This is a priveleged customer 
<% } else{ %> 
This is a normal customer 
<%} %> 

Aber ich bin in der Lage, so zu verwenden, nur:

<div> 
@{ 
    if(Model.Amount > 70000.00) 
    { 
     Response.Write("This is a Privelleged Customer"); <br /> 
    } 
    else 
    { 
     Response.Write("This is a Normal Customer"); <br /> 
    } 
} 
The Customer Id is: @Model.Id <br /> 
The Customer Name is: @Model.Code <br /> 
</div> 
+0

Es ist weil die Render-Engine, die Sie verwenden, Razor ist. Ich denke, wenn Sie das Projekt einrichten, können Sie auswählen, welche Engine verwendet werden soll.Sie können dies tun, nachdem Sie es eingerichtet haben, sehen Sie diese SO Post hier: http://stackoverflow.com/questions/16563811/changing-view-engine-after-project-has-been-created - Sie werden nur muss geändert werden * von * Razor zu ASPX (ein bisschen Internet-Suche bringt alles, was Sie brauchen) –

+0

Warum verwenden Sie Response.Write in Ihrem Razor-Code? Du musst das nicht tun. Ist das der Grund, warum du Razor nicht magst? – Liam

+0

@Liam - Ich denke, dass das OP gewohnt ist, in die ASPX View Engine zu schreiben. Um die 'Response.Write()' -Funktion zu umgehen, könnten Sie einfach ein HTML-Markup in die geschweiften Klammern schreiben. –

Antwort

4

Wollen Sie wirklich der ehemalige denken ist lesbarer als das letztere? Ich nicht. Die Razorsyntax bleibt bestehen, also sollten Sie sich besser daran gewöhnen und alles, was Sie über ASP.NET-WebForms wissen, löschen. Warum benutzen Sie auch das archaische ?

Ein Gestochen wie Implementierung des Codes würde wie folgt aussehen:

@if(Model.Amount > 70000.00) 
{ 
    <text>This is a Priveleged Customer</text><br /> 
} 
else 
{ 
    <text>This is a Normal Customer</text><br /> 
} 

Welche ziemlich lesbar ist, wenn Sie mich fragen. Siehe ASP.NET MVC View Engine Comparison für einen Vergleich von View-Engines, die jeweils ihre eigene Syntax mit entsprechenden Vor- und Nachteilen bereitstellen.

Wenn Sie wirklich auf der WebForms-Syntax bestehen, wenden Sie die WebFormViewEngine wie in Changing View Engine after Project has been created erläutert an.

2

Ich stimme zu CodeCaster's answer - die Razor View Engine ist hier zu bleiben und ist sicherlich lesbarer als ASPX.

Allerdings, wenn Sie wirklich müssen ändern, können Sie.

Gehen Sie in Global.asax.cs und finden Sie die Application_Start() Methode.

Dort, fügen Sie den folgenden Code ein:

ViewEngines.Engines.Clear(); 
ViewEngines.Engines.Add(new WebFormViewEngine()); 

Und das wird zurückkehren Sie die alten Stil-Ansicht-Engine zu verwenden.

Sie können auch auswählen, welche Engine beim ersten Einrichten des Projekts verwendet wird - für wann Sie sie in Zukunft einrichten.

this helps :)

0

Sie verwenden können, @: den Text innerhalb Server-Tags angezeigt werden

<div> 
@{ 
if(Model.Amount > 70000.00) 
{ 
@:This is a Privelleged Customer <br /> 
} 
else 
{ 
    @:This is a Normal Customer <br /> 
} 
} 
The Customer Id is: @Model.Id <br /> 
The Customer Name is: @Model.Code <br /> 
</div> 
0

Sie könnten eine andere Eigenschaft zu Ihrem Modell nur aus (wenn Sie in der Lage sind) und zu handhaben die Logik gibt:

public string CustomerText 
{ 
    get 
    { 
     return Amount > 70000.00 ? "This is a Priveleged Customer" : "This is a Normal Customer"; 
    } 
} 

Und verbraucht es aus Ihrer Sicht:

<text>@Model.CustomerText</text><br /> 
+0

Oder besser noch diese Logik in den Controller und füllen Sie einen Wert in einem ViewModel. – Liam

+0

@Liam - tatsächlich! – Ric

Verwandte Themen