Asp.net mvc 3 Razor语法没有按我预期的方式工作
我的剃须刀语法有问题吗 这样说是错误的 foreach块缺少结束“}”字符Asp.net mvc 3 Razor语法没有按我预期的方式工作,asp.net-mvc-3,razor,Asp.net Mvc 3,Razor,我的剃须刀语法有问题吗 这样说是错误的 foreach块缺少结束“}”字符 <ul> @{var client = "null";} @foreach (var instance in Model) { if (instance.tbl_Policy.tbl_Client.txt_clientName != client) { client = instance.tbl_Policy.tbl_Client.txt_clientName; <
<ul>
@{var client = "null";}
@foreach (var instance in Model)
{
if (instance.tbl_Policy.tbl_Client.txt_clientName != client)
{
client = instance.tbl_Policy.tbl_Client.txt_clientName;
</ul><h1>@client</h1>
<ul>
}
<li>
@instance.tbl_Policy.txt_policyNumber -
Assigned to : @instance.aspnet_Membership.aspnet_User.UserName
@instance.ATLCheckType.Question
<button type="button" rel="<%:instance.ATLCheckInstanceId.ToString()%>">DelFiled</button>
<button type="button" rel="<%:instance.ATLCheckInstanceId.ToString()%>">DelLineItem</button>
</li>
}
</ul>
@{var client=“null”;}
@foreach(模型中的var实例)
{
if(instance.tbl_Policy.tbl_Client.txt_clientName!=客户端)
{
client=instance.tbl_Policy.tbl_client.txt_clientName;
@客户端
}
-
@instance.tbl_Policy.txt_Policy编号-
分配给:@instance.aspnet\u Membership.aspnet\u User.UserName
@instance.ATLCheckType.Question
德尔菲尔德
DelLineItem
}
里面所有的东西是怎么回事?您需要使用@
语法
<ul>
@{var client = "null";}
@foreach (var instance in Model)
{
if (instance.tbl_Policy.tbl_Client.txt_clientName != client)
{
client = instance.tbl_Policy.tbl_Client.txt_clientName;
</ul><h1>@client</h1>
<ul>
}
<li>
@instance.tbl_Policy.txt_policyNumber -
Assigned to : @instance.aspnet_Membership.aspnet_User.UserName
@instance.ATLCheckType.Question
<button type="button" rel="@instance.ATLCheckInstanceId.ToString()">DelFiled</button>
<button type="button" rel="@instance.ATLCheckInstanceId.ToString()">DelLineItem</button>
</li>
}
</ul>
@{var client=“null”;}
@foreach(模型中的var实例)
{
if(instance.tbl_Policy.tbl_Client.txt_clientName!=客户端)
{
client=instance.tbl_Policy.tbl_client.txt_clientName;
@客户端
}
-
@instance.tbl_Policy.txt_Policy编号-
分配给:@instance.aspnet\u Membership.aspnet\u User.UserName
@instance.ATLCheckType.Question
德尔菲尔德
DelLineItem
}
Razor无法处理代码块中不平衡的HTML标记
更改if
块以将不平衡的标记视为纯文本:
if (instance.tbl_Policy.tbl_Client.txt_clientName != client)
{
client = instance.tbl_Policy.tbl_Client.txt_clientName;
@:</ul><h1>@client</h1>
@:<ul>
}
if(instance.tbl\u Policy.tbl\u Client.txt\u clientName!=Client)
{
client=instance.tbl_Policy.tbl_client.txt_clientName;
@:@客户端
@:
}
应重构代码以正确支持平衡标记
@foreach (var groupedClient in Model.GroupBy(i => i.tbl_Policy.tbl_Client.txt_clientName))
{
<ul>
<h1>@groupedClient.Key</h1>
foreach(var instance in groupedClient)
{
<li>
@instance.tbl_Policy.txt_policyNumber -
Assigned to : @instance.aspnet_Membership.aspnet_User.UserName
@instance.ATLCheckType.Question
<button type="button" rel="@instance.ATLCheckInstanceId.ToString()">DelFiled</button>
<button type="button" rel="@instance.ATLCheckInstanceId.ToString()">DelLineItem</button>
</li>
}
</ul>
}
@foreach(Model.GroupBy(i=>i.tbl\u Policy.tbl\u Client.txt\u clientName)中的var groupedClient)
{
@groupedClient.Key
foreach(groupedClient中的var实例)
{
-
@instance.tbl_Policy.txt_Policy编号-
分配给:@instance.aspnet\u Membership.aspnet\u User.UserName
@instance.ATLCheckType.Question
德尔菲尔德
DelLineItem
}
}
这当然有帮助(我正在将我的旧ASPX视图引擎的一个子集转移过来)解析器没有重新定义代码块的语法,也从来没有到达结束括号。我希望您不要再建议将@:
作为修复写得不好的代码的解决方案。虽然我明白,有时人们需要最简单的答案来解除障碍:)@MarcinD:Yes;你说得对。事实上,我今天在最近的一个回答中建议了一个GroupBy。我看到了这一点,并在另一个问题中提供了一个类似的答案,其中包含固定视图逻辑:)感谢重构帮助。。。我投了赞成票。