【问题标题】:ASP.NET MVC3 Html.EditorFor() problemASP.NET MVC3 Html.EditorFor() 问题
【发布时间】:2010-12-01 13:50:08
【问题描述】:

我尝试使用 Html.EditorFor() 帮助程序将数据绑定到模型并提交,但模型来到控制器为空。

这是模型代码:

public class LogOnModel
{
    [LocalizedRequired]
    [LocalizedDisplayName("User Name")]
    public string UserName { get; set; }

    [LocalizedRequired]
    [DataType(DataType.Password)]
    [LocalizedDisplayName("Password")]
    public string Password { get; set; }

    [LocalizedDisplayName("Remember Me")]
    public bool RememberMe { get; set; }
}

这是cshtml:

@model Models.LogOnModel
{
    View.Title = "Log On";
}
@using (Html.BeginForm())
{
    @Html.EditorFor(m => m.UserName);
    @Html.EditorFor(m => m.Password);
    <input type="submit" value="LogOn" />
}

html 代码是这样生成的:

<input id="UserName_UserName" name="UserName.UserName" type="text" value="qwerty" />
<input id="Password_Password" name="Password.Password" type="password" />

在 html 生成的代码中似乎有错误,应该是 id="someid" value="somevalue",而不是 id="someid_someid" value="somevalue.somevalue"

【问题讨论】:

  • 您是否创建了自己的编辑器模板?如果是这样,您可以发布该代码吗?
  • [DataType(DataType.Password)]EditorFor 对我来说效果很好。我的 id 和 name 属性就像我预期的那样只是“密码”。

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


【解决方案1】:

由于您只是使用文本框,因此您始终可以使用以下内容

@using (Html.BeginForm()) {
    @Html.TextBoxFor(m => m.UserName);
    @Html.PasswordFor(m => m.Password);
   <input type="submit" value="LogOn" />
}

否则它可能取决于您创建的自定义模板。

【讨论】:

    【解决方案2】:

    你好,你可以通过像这样输入@type指令来解决它:

     @Html.EditorFor(model => model.strPassword, new { htmlAttributes = new { @class = "form-control",@type="password" } })
    

    【讨论】:

      【解决方案3】:

      谢谢!是的,这是编辑器模板中的问题:

      <div class="textinput">@Html.TextBox(ViewData.ModelMetadata.PropertyName, Model)</div>
      

      我是这样解决的:

      <div class="textinput">@Html.TextBox(String.Empty)</div>
      

      这是一个好的解决方案吗?

      【讨论】:

      • &lt;div class="textinput"&gt;@Html.TextBoxFor(m =&gt; m)&lt;/div&gt; 应该适合你。
      • 是的,它有效!谢谢!你能解释一下我的解决方案和你的解决方案之间的区别吗?
      • 为什么需要一个简单字符串字段的编辑器模板?而且,为什么您觉得有必要使用 LocalizedRequired 和 LocalizedDisplayName 而不是 Required 和 DisplayName?
      【解决方案4】:
      @using (Html.BeginForm()) {
          @Html.TextBoxFor(m => m.UserName);
          @Html.TextBoxFor(m => m.Password);
         <input type="submit" value="LogOn" />
      }
      

      【讨论】:

        猜你喜欢
        • 2023-03-21
        • 2012-06-10
        • 2011-06-23
        • 1970-01-01
        • 2011-08-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多