我尝试使用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”
答案 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" />
}