2016-10-20 89 views
0

我是MVC的新手。現在我正在學習VS2010,ASP.NET MVC 4.<% %>不能在mvc4中工作

<% %>不適合我。我很難使用@

如果我用大量的if{}編寫大碼,那麼<%將是有用的。 能否請你幫我如何與<% %>

寫,我需要這樣的:

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 
<%} %> 

但我能夠使用這樣才:

<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

這是因爲您使用的渲染引擎是Razor。我認爲,當您設置項目時,您可以選擇使用哪個引擎。你可以在設置後做到這一點,看到這個所以發佈在這裏:http://stackoverflow.com/questions/16563811/changing-view-engine-after-project-has-been-created - 你會需要將其從* Razor更改爲ASPX(需要一點互聯網搜索才能滿足您的需求) –

+0

爲什麼在Razor代碼中使用Response.Write?你不需要這樣做。這就是你不喜歡剃刀的原因嗎? – Liam

+0

@Liam - 我認爲這是OP用於寫入ASPX視圖引擎。爲了克服不得不使用'Response.Write()'函數,你可以在大括號內寫一些HTML標記 –

回答

4

你真的認爲前者比後者更可讀?我不。 Razor語法在這裏留下來,所以你最好習慣它,並放棄你對ASP.NET WebForms的所有知識。另外,你爲什麼使用古老的Response.Write()

剃刀般的實現你的代碼應該是這樣的:

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

如果你問我,這是相當可讀。查看ASP.NET MVC View Engine Comparison查看引擎的比較,每個引擎提供自己的語法和優缺點。

如果您確實堅持使用WebForms語法,請按照Changing View Engine after Project has been created中的說明應用WebFormViewEngine。

2

我同意CodeCaster's answer - Razor視圖引擎在這裏停留,並且比ASPX更可讀。

但是,如果你真的需要改變它,你可以。

進入Global.asax.cs並找到Application_Start()方法。

在那裏,添加以下代碼:

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

,這將恢復您在使用舊式視圖引擎。

此外,您可以選擇在首次設置項目時使用哪個引擎 - 以供將來設置時使用。

希望這有助於:)

0

你可以用@:顯示服務器標籤內的文本

<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

你可能只是另一個屬性添加到您的模型(如果你能)和處理有邏輯:

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

和消費它在你的觀點:

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

好很多,或者更好,但把這個邏輯放入控制器並在viewModel中填充一個值。 – Liam

+0

@Liam - 的確如此! – Ric