ASP.NET MVC 2使用POST创建模型

Boy*_*ovv 3 validation asp.net-mvc entity-framework

我有以下型号:

public class Product {
 public int Id { get; set; }
 public string Name { get; set; }
 private int CategoryId { get; set; }
 public Category Category { get; set; }
 public string InventoryDetails { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我的控制器中有一个用于创建新产品的操作.我的问题是如何限制我的模型的属性,可以从POST数据绑定?因为我只希望Name和CategoryId被用户POST数据绑定.或者更好的是创建一个单独的视图模型,它只具有可以绑定的这些属性?

public ActionResult Create(Product p)
Run Code Online (Sandbox Code Playgroud)

要么

public ActionResult Create(CreateProductViewModel model)
Run Code Online (Sandbox Code Playgroud)

哪里

public class CreateProductViewModel {
 public string Name {get; set;}
 public int CategoryId {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

tva*_*son 7

使用视图模型.这将使您的视图与数据模型分离.正如您所发现的那样,它们并不总是具有相同的需求,并且模型应该特定于视图.您可以手动映射属性,也可以将AutoMapper用于更复杂的场景.