foreach块缺少一个结束"}"字符

Jon*_*Jon 8 .net c# asp.net-mvc asp.net-mvc-3

我今天和Razor很开心!你能看出这个观点有什么问题并解释它为什么会出错吗?

@foreach (var item in Model){

if (item.ID != PreviousOrderId){
    <div class="orderdetail">
        <div class="customer">
            <p class="strong">OrderID:</p> 
            <p>@item.ID</p>
            <p class="strong">Order Date:</p>
            <p>@String.Format("{0:g}", TimeZoneInfo.ConvertTime(item.DateInitialised, TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time")))</p>
            <p class="strong">Customer Name:</p> 
            <p>@item.WebsiteUser.Name</p>
            <p class="strong">Practice Name:</p>
            <p>@item.WebsiteUser.PracticeName</p>
            <p class="strong">Customer E-Mail:</p> 
            <p>@item.WebsiteUser.EMailAddress</p>
        </div>
   }



    <div class="detail">
        <span class="strong">Licence Key:</span><span>@item.Licence.LicenceKey</span>
        <span class="strong">Serial No:</span><span>@item.Licence.SerialNumber</span>
    </div>               

   @if (item.ID != PreviousOrderId && PreviousOrderId != 0){
    </div>
    <div class="clear"></div>
   }        

PreviousOrderId = item.ID;
}
Run Code Online (Sandbox Code Playgroud)

ady*_*suf 15

你分成<div class="orderdetail">两部分.开始标记在第一个if块中,结束标记在第二个if块中.

我认为这对Razor来说很困惑.

尝试div在一个if区块中打开和关闭.

  • @Falanwe不幸的是,它抛出了一个带有Parser Error的YSOD.我认为它应该只是编辑方面 (2认同)

360*_*alk 9

如果您已经在代码块中,则不再需要@ -prefix代码构造...您的代码块以@foreach开头.

@foreach (var x in new string[] { "x", "y" ])
{
    if (userGuid != ViewBag.x)
   {
    @:<div class="orderdetail">
    <div class="customer">
        <p class="strong">OrderID:</p> 
        <p>@item.ID</p>
        <p class="strong">Order Date:</p>
        <p>@String.Format("{0:g}", TimeZoneInfo.ConvertTime(item.DateInitialised</p>
        <p class="strong">Customer Name:</p> 
        <p>@item.WebsiteUser.Name</p>
        <p class="strong">Practice Name:</p>
        <p>@item.WebsiteUser.PracticeName</p>
        <p class="strong">Customer E-Mail:</p> 
        <p>@item.WebsiteUser.EMailAddress</p>
    </div>
    }
    <div class="detail">
        <span class="strong">Licence Key:</span><span>@item.Licence.LicenceKey</span>
        <span class="strong">Serial No:</span><span>@item.Licence.SerialNumber</span>
    </div>               

if (userGuid != ViewBag.x && ViewBag.x != 0)
{
    @:</div>
    <div class="clear"></div>
}      
PreviousOrderId = item.ID;    
}
Run Code Online (Sandbox Code Playgroud)

  • 您还可以将开始和结束 div 放在 `@Html.Raw("&lt;div class=\"orderdetail\"&gt;")` 和 @Html.Raw("&lt;/div&gt;")` 中 (2认同)