The foreach block is missing the closing character "}"

Today I am having fun with Razor! You can understand what is wrong with this look and explain why these are mistakes?

@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; } 
+7
source share
2 answers

You divided <div class="orderdetail"> into two parts. The start tag is in the first if block, the closing tag is in the second if block.

This is something confusing for Razor, I think.

Try opening and closing your div in one if block.

+15
source

if you are already in a code block that you no longer need for @ -prefix code constructs ... your code block starts with @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; } 
+8
source

All Articles