这很奇怪,或者至少我认为。我有一个简单的密码更改表单,其中包含用于输入密码的用户输入的控件。现在,问题是用户输入的内容,视图只回发一个空字符串。
这是我视图的控件
@Html.PasswordFor(model => model.Password)
模型属性:
[Required]
[DataType(DataType.Password)]
[StringLength(20, MinimumLength = 10)]
[Display(Name = "Password")]
public string Password { get; set; }
[HttpGet]
public ActionResult Change(int userid)
{
try
{
var model = GetUser(userid);
return View(model);
}
catch (Exception e)
{
//log error
throw;
}
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Change(User model)
{
try
{
model = ChangeUserCredentials(model); //break point here
return View(model);
}
catch (Exception e)
{
//log error
throw;
}
}
我尝试过:
fwiw,几天前工作正常,视图或控制器中的代码没有任何变化。
答案 0 :(得分:0)
为您的密码助手添加一个参数,如下所示:
@Html.PasswordFor(model => model.Password,new{@name="mypassword"})
然后将此参数添加到您的操作方法
public ActionResult Change(User model,string mypassword)
这将有效!但这不是一个很好的方式。
如果你想做得对,你必须确保你做了模型绑定。
答案 1 :(得分:0)
我知道这听起来很愚蠢。但这就解决了这个问题,以防万一其他人面临同样的问题:
1)每this个帖子,我在视图的密码属性中添加了新的{value = Model.CurrentPassword}) 2)我故意将密码设置为' null'在GET方法中