1

ビュー (MVC アプリケーション) で Html.EditorForModel ヘルパーを使用しようとしたときに、上記のエラーを受け取りました。ビューのコードは次のとおりです。

@model CodeFirst.Models.Person

@{
   ViewBag.Title = "CreatePerson";
 }

<h2>CreatePerson</h2>

@using (Html.BeginForm())
{ 
  <fieldset>
      <legend>Create person entry</legend>
      @Html.EditorForModel()
  </fieldset>
}

<div>
    @Html.ActionLink("Back to List", "Index")
</div>

オブジェクト型のエディター テンプレートを使用しようとしていました。テンプレートはこちら

@inherits System.Web.Mvc.WebViewPage
@if (Model == null)
    <span>@ViewData.ModelMetadata.NullDisplayText</span>
else
{
    <table cellpadding="0" cellspacing="0" class="editor-table">
      @foreach (var prop in ViewData
     .ModelMetadata
     .Properties
     .Where(pm => pm.ShowForDisplay && !ViewData.TemplateInfo.Visited(pm)))
      {
        <tr>
            <td>
                <div class="editor-label">
                    @prop.GetDisplayName()
                </div>
            </td>
            <td width="10px">@(prop.IsRequired ? "*" : "") </td>
            <td>
                <div class="editor-field">
                    <span>@Html.Editor(prop.PropertyName)</span>
                    <span>@Html.ValidationMessage(prop.PropertyName, "*")</span>
                </div>
            </td>
        </tr>
    }
  </table>
}

このサンプルは MVC ブックで見つけました。必須フィールドに「*」文字を追加します。ビューにアクセスしようとすると、前述のエラーが表示されます。このエラーが表示される理由がわかる場合は、お知らせください。

4

1 に答える 1

6

このように見えますが、ifステートメントには中括弧がありません。

@if (Model == null)
    <span>@ViewData.ModelMetadata.NullDisplayText</span>
else

に置き換えます

@if (Model == null) {
    <span>@ViewData.ModelMetadata.NullDisplayText</span>
} else {
    ...
}
于 2013-06-30T15:07:20.133 に答える