2017-05-16 31 views
0

我在ASP.NET MVC5中使用以下代碼獲得以下異常。我使用內置的腳手架來生成我的視圖代碼(List),但它不起作用。例外是關於一個else塊,但它被拋在我的foreach的第二個元素,所以我完全不知道發生了什麼(這裏:@Html.DisplayFor(modelItem => item.Nem))。在腳手架生成的視圖代碼中的HttpParseException

我讀了關於這個異常的例子,但這些案例都是關於if-else的情況,所以我不能使用這些解決方案,但仍然不知道我做了什麼錯誤。

System.Web.HttpParseException:「else塊缺少右 「}」 字符。確保所有 的字符都匹配「}」字符,並且沒有任何「}」字符被解釋爲標記。

@foreach (var item in Model) { 
    <tr> 
     <td> 
      @Html.DisplayFor(modelItem => item.Nev) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.Nem) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.SzuletesiIdo) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.SzuletesiHely) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.Taj) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.Irsz) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.Telepules) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.Cim) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.Email) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.Mobil) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.OtthoniTel) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.AnyaNev) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.AnyaMobil) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.AnyaEmail) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.ApaNev) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.ApaMobil) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.ApaEmail) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.TanfolyamSorszam) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.TanfolyamOsztaly) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.Csoport) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.BallagasEv) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.KimaradtDatum) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.PoloMeret) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.Iskola) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.BkkIgazolvany) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.MavIgazolvany) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.MakIgazolvany) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.ProgramUtanHaza) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.EgeszsegugyiTudnivalo) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.Egyeb) 
     </td> 
     <td> 
      @Html.ActionLink("Edit", "Edit", new { id=item.GyerekId }) | 
      @Html.ActionLink("Details", "Details", new { id=item.GyerekId }) | 
      @Html.ActionLink("Delete", "Delete", new { id=item.GyerekId }) 
     </td> 
    </tr> 
} 

EDIT:item.Nem是枚舉類型(具有兩個可能的值)。我使用的是DisplayTemplate顯示枚舉(視圖\共享\ DisplayTemplates \ Enum.cshtml):

@model Enum 

@if (EnumHelper.IsValidForEnumHelper(ViewData.ModelMetadata)) 
{ 
    // Display Enum using same names (from [Display] attributes) as in editors 
    string displayName = null; 
    foreach (SelectListItem item in EnumHelper.GetSelectList(ViewData.ModelMetadata, (Enum)Model)) 
    { 
     if (item.Selected) 
     { 
      displayName = item.Text ?? item.Value; 
     } 
    } 

    // Handle the unexpected case that nothing is selected 
    if (String.IsNullOrEmpty(displayName)) 
    { 
     if (Model == null) 
     { 
      displayName = String.Empty; 
     } 
     else 
     { 
      displayName = Model.ToString(); 
     } 
    } 

    @Html.DisplayTextFor(model => displayName) 
} 
else 
{ 
    // This Enum type is not supported. Fall back to the text. 
    @Html.DisplayTextFor(model => model) 
+0

你介意給我們看'Model',以便我們看看'Nem'屬性是什麼樣子的? – Svek

+0

@Svek我編輯了帖子。 'Nem'屬性是一個枚舉類型,你可以在編輯過的文章中看到如何顯示枚舉。 – szkup

+0

第二個代碼塊末尾的'}'在哪裏?看起來像是拋出的異常指向的問題! – Svek

回答

1

如果你看一下你的第二個代碼塊(視圖\共享\ DisplayTemplates \ Enum.cshtml)

你缺少收盤}else聲明

結束這恰恰是例外告訴你:)