1

エディターテンプレートを使用しています。ビューの構文は次のようになります。

Html.EditorFor(m => m.Email)

文字列エディタテンプレートは次のようになります。

@{
   var o = ViewData.ModelMetadata;
} 

@model string

@Html.TextBox(o.PropertyName,
              this.Model,
              new { @class="textinput-single-line", placeholder = o.Watermark })

問題は、ポストバック時に、TextBoxに何を入力してもmodel.Emailがnullになることです。テキストボックスの値がモデルに適切にバインドされていないのはなぜですか?

編集:これがHTML出力です

        <fieldset>
          <legend>Log in Form</legend>
          <ol>
            <li>
              <div class="editor-for">
                <label class="label-single-line" for="Email_Email">Email</label>
                <input class="textinput-single-line" id="Email_Email" name="Email.Email" placeholder="" type="text" value=""/>
                <div class="clearboth"/>
              </div>
            </li>
            <li>
              <div class="editor-for">
                <span class="label-single-line"/>
                <input class="tickbox-single-line" id="RememberMe_RememberMe" name="RememberMe.RememberMe" type="checkbox" value="true"/>
                <input name="RememberMe.RememberMe" type="hidden" value="false"/>
                <label class="label-tickbox" for="RememberMe_RememberMe">Remember me?</label>
                <div class="clearboth"/>
              </div>
            </li>
          </ol>
          <input type="submit" value="Log in"/>
        </fieldset>
4

1 に答える 1

1

String.Emptyまたは""をエディターテンプレートで使用します。ビューエンジンが正しい名前を見つけます。

@Html.TextBox(String.Empty,
              this.Model,
              new { @class="textinput-single-line", placeholder = o.Watermark })
于 2012-10-19T17:28:23.913 に答える