Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 Razor语法没有按我预期的方式工作_Asp.net Mvc 3_Razor - Fatal编程技术网

Asp.net mvc 3 Razor语法没有按我预期的方式工作

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; <

我的剃须刀语法有问题吗

这样说是错误的 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><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。我看到了这一点,并在另一个问题中提供了一个类似的答案,其中包含固定视图逻辑:)感谢重构帮助。。。我投了赞成票。