Razor Синтаксис Не работает так, как я ожидал - PullRequest
4 голосов
/ 14 марта 2011

возникают проблемы с синтаксисом бритвы

выдает ошибку Parsor, говорящую о том, что в блоке 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>

Ответы [ 3 ]

7 голосов
/ 14 марта 2011

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>
   }
7 голосов
/ 15 марта 2011

Код должен быть реорганизован для корректной поддержки сбалансированных тегов

@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>
}
2 голосов
/ 14 марта 2011

Что там со всем этим <%: %> материалом? Вам необходимо использовать синтаксис @.

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...