使用EditorFor <string> </string>回发后模型为null

时间:2012-10-19 17:26:45

标签: .net asp.net-mvc razor

我正在使用编辑模板,视图中的语法如下所示:

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>

1 个答案:

答案 0 :(得分:1)

在编辑器模板中使用String.Empty""。视图引擎会为您找出正确的名称。

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