C# ASP.NET MVC3 Html.EditorFor()问题
我尝试使用Html.EditorFor()帮助程序将数据绑定到模型并提交,但到达控制器的模型为null 以下是型号代码:C# ASP.NET MVC3 Html.EditorFor()问题,c#,asp.net-mvc-3,razor,C#,Asp.net Mvc 3,Razor,我尝试使用Html.EditorFor()帮助程序将数据绑定到模型并提交,但到达控制器的模型为null 以下是型号代码: public class LogOnModel { [LocalizedRequired] [LocalizedDisplayName("User Name")] public string UserName { get; set; } [LocalizedRequired] [DataType(DataType.Password)]
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" />
}
@model Models.LogOnModel
{
View.Title=“登录”;
}
@使用(Html.BeginForm())
{
@EditorFor(m=>m.UserName);
@EditorFor(m=>m.Password);
}
生成的html代码如下所示:
<input id="UserName_UserName" name="UserName.UserName" type="text" value="qwerty" />
<input id="Password_Password" name="Password.Password" type="password" />
<div class="textinput">@Html.TextBox(String.Empty)</div>
这似乎是html生成的代码中的错误,它应该是id=“someid”value=“somevalue”,而不是id=“someid\u someid”value=“somevalue.somevalue”,因为您只使用文本框,所以始终可以使用以下内容
@using (Html.BeginForm()) {
@Html.TextBoxFor(m => m.UserName);
@Html.PasswordFor(m => m.Password);
<input type="submit" value="LogOn" />
}
@使用(Html.BeginForm()){
@TextBoxFor(m=>m.UserName);
@PasswordFor(m=>m.Password);
}
否则它可能取决于您创建的自定义模板。谢谢!是的,编辑器模板中存在问题:
<div class="textinput">@Html.TextBox(ViewData.ModelMetadata.PropertyName, Model)</div>
@Html.TextBox(ViewData.ModelMetadata.PropertyName,Model)
我是这样解决的:
<input id="UserName_UserName" name="UserName.UserName" type="text" value="qwerty" />
<input id="Password_Password" name="Password.Password" type="password" />
<div class="textinput">@Html.TextBox(String.Empty)</div>
@Html.TextBox(String.Empty)
这是一个好的解决方案吗?您好,您只需按如下方式放置@type指令即可解决此问题:
@Html.EditorFor(model => model.strPassword, new { htmlAttributes = new { @class = "form-control",@type="password" } })
@使用(Html.BeginForm()){
@TextBoxFor(m=>m.UserName);
@TextBoxFor(m=>m.Password);
}
您是否创建了自己的编辑器模板?如果是这样的话,你能发布那个代码吗?[DataType(DataType.Password)]
使用EditorFor
对我来说很好。我的id和name属性就像我预期的那样是“Password”。@Html.TextBoxFor(m=>m)
应该适合你。是的,它可以!谢谢您能解释一下我的解决方案和您的解决方案之间的区别吗?为什么您需要一个简单字符串字段的编辑器模板?而且,为什么您觉得有必要使用LocalizedRequired和LocalizedDisplayName而不是Required和DisplayName?