2016-10-20 138 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