ASP.NET MVC3 Html.EditorFor()问题

时间:2010-12-01 13:50:09

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

我尝试使用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”

4 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分:2)

嗨,你可以通过像这样放置@type指令来解决它:

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

答案 2 :(得分:0)

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

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

我这样解决:

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

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

答案 3 :(得分:0)

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