今天我正在玩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;
}
答案 0 :(得分:15)
您已将<div class="orderdetail">
分为两部分。开始标记位于第一个if
块中,结束标记位于第二个if
块中。
这让Razor感到困惑,我想。
尝试在一个div
区块中打开和关闭if
。
答案 1 :(得分: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;
}