例如,有一些对象将被建模用于强类型视图:
class SomeModel {
    public string SomeUsualField { get; set; }
}此外,控制器中存在一些操作,这些操作将与上面指定的对象一起工作:
public ActionResult Index(SomeModel obj)
{ 
    return View(obj);
}所以问题是,为什么obj不是null,而Index操作首先被调用?它使用空SomeUsualField创建了SomeModel类的新实例。
发布于 2011-11-25 14:04:01
ASP.NET MVC模型绑定基础结构尝试使用来自请求对象的数据(查询字符串、表单字段等)填充所有属性。因此,它创建控制器的所有参数的一个实例,以尝试匹配属性。因为您没有传递SomeUsualField,所以它是null,但是参数对象有一个空实例。
您可以在调用http://localhost/MySite/MyController/Index?SomeUsualField=test时初始化属性SomeUsualField。属性测试将使用‘SomeUsualField’自动初始化
如果不希望设置该参数,可以将其放在一边,并使用属性HttpPost执行第二个操作。music store是一个很好的教程。
public ActionResult Index() 
{  
    var obj = new SomeModel();
    return View(obj); 
} 
[HttpPost]
public ActionResult Index(SomeModel obj) 
{  
    // update logic
    return View(obj); 
} https://stackoverflow.com/questions/8265154
复制相似问题