Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET MVC3 Html.EditorFor()问题_C#_Asp.net Mvc 3_Razor - Fatal编程技术网

C# ASP.NET MVC3 Html.EditorFor()问题

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)]

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

以下是型号代码:

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?