MVC值不回发给控制器

时间:2015-09-27 12:13:35

标签: c# asp.net-mvc

这很奇怪,或者至少我认为。我有一个简单的密码更改表单,其中包含用于输入密码的用户输入的控件。现在,问题是用户输入的内容,视图只回发一个空字符串。

这是我视图的控件

@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;
    }
}

我尝试过:

  1. 删除了IE,firefox和chrome中的缓存
  2. 尝试更改'密码'到'编辑'
  3. fwiw,几天前工作正常,视图或控制器中的代码没有任何变化。

2 个答案:

答案 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方法中