呈现视图后重写的ASP.NET MVC ViewModel绑定

时间:2016-04-14 10:21:38

标签: c# mvvm asp.net-mvc-5 model-binding

我有一个看起来像这样的行动

[HttpGet]
public ActionResult ChooseReplacementUser(int deletedUserId, int deletedDbUserId)
{
     return View(new ChooseReplacementUserVM());
    //alternatively
    //return View(new ChooseReplacementUserVM() { DeletedUserId = deletedUserId });
}

视图模型

public class ChooseReplacementUserVM
{
    public int DeletedUserId { get; set; }
    public int DbUserId { get; set; }
}

我尝试了一些这方面的变化,但这可能是最明确的。当模型刚刚返回(并且没有设置属性)时,在视图中断时,模型的值为0。 问题是在检查Model之后,值为0,我希望它们为0,但由于某些原因,ASP在此之后做了一些绑定(猜测类似于Request.Parameters的东西)。当我检查源时,DeletedUserId的隐藏字段现在设置为GET方法中发送的值。

这种行为非常混乱,我会接受它自动绑定到VM(这样当我返回一个ViewModel的新实例时,属性会在它们具有相同名称时自动绑定到它,当在视图中将值设置为VM),但不是VM显示 0 ,然后在检查html时(以及发布表单时)值 3369

Get method, the html markup, then the source

这个问题已经在框架中存在了很长时间,但我今天又遇到了它,我真的想知道为什么这个问题没有得到解决。

那么,这种行为是设计还是绑定中的错误?如果按照设计,我无法理解为什么有人会想要这种行为。

0 个答案:

没有答案