< %%>在mvc4中不起作用

时间:2016-10-20 08:17:49

标签: c# asp.net-mvc asp.net-mvc-4

我是MVC的新手。现在我正在学习VS2010,ASP.NET MVC 4。

<% %>对我不起作用。使用@对我来说很乏味。

如果我编写大量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>

4 个答案:

答案 0 :(得分:4)

你真的认为前者比后者更具可读性吗?我没有。 Razor语法仍然存在,因此您最好习惯它并删除有关ASP.NET WebForms的所有知识。另外,为什么使用古老的Response.Write()

类似Razor的代码实现如下:

@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。

答案 1 :(得分:2)

我同意CodeCaster's answer - Razor视图引擎仍然存在,并且肯定比ASPX更具可读性。

但是,如果您确实需要更改它,您可以。

进入Global.asax.cs并找到Application_Start()方法。

在那里,添加以下代码:

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

这将使您恢复使用旧式视图引擎。

此外,您可以选择首次设置项目时使用的引擎 - 以及将来设置时使用的引擎。

希望这会有所帮助:)

答案 2 :(得分: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>

答案 3 :(得分:0)

你可以在你的模型中添加另一个属性(如果你能够)并在那里处理逻辑:

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

在你看来消费它:

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