脚手架生成的视图代码中的HttpParseException

时间:2017-05-16 19:32:10

标签: c# asp.net-mvc razor asp.net-mvc-scaffolding

我在ASP.NET MVC5中使用以下代码获得以下异常。我使用内置的脚手架来生成我的视图代码(List),它只是不起作用。例外情况是关于else块,但它被抛到我的 foreach 的第二个元素中,所以我完全不知道发生了什么(这里:@Html.DisplayFor(modelItem => item.Nem))。

我读到了这个例外,但案件真的是关于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>
}

编辑:item.Nem是一个枚举类型(有两个可能的值)。我使用DisplayTemplate显示枚举(Views \ Shared \ 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)

1 个答案:

答案 0 :(得分:1)

如果您查看第二个代码块(Views \ Shared \ DisplayTemplates \ Enum.cshtml)

  

您错过了<DataGridComboBoxColumn x:Name="stockINOmschrijvingColumn" Header="Stockplaats IN" Width="auto" SelectedItemBinding="{Binding StockINOmschrijving, Mode=TwoWay}" ItemsSource="{Binding Source={StaticResource stockPlaatsINViewSource}}"/> 声明

末尾的结束}

这正是异常告诉你的:)