【发布时间】:2018-08-12 02:44:13
【问题描述】:
这是我的视图模型
public class SaleOrderViewModel
{
public SO SaleOrder { get; set; }
public List<SOD> SaleOrderDetail { get; set; }
public IQueryable<Product> Products { get; set; }
public Product Product { get; set; }
}
我只想发布和验证 SaleOrder 和 SaleOrderDetail 的一些属性。其他属性为空或不需要发布。
这是我的发帖方式
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([SaleOrderViewModel saleOrderViewModel)
{
if (ModelState.IsValid)
{
//more code
}
}
但 ModelState.IsValid 始终为 false。
如何只包含和绑定视图模型的一些属性?
【问题讨论】:
-
视图模型不包含数据模型(尤其是在编辑时)——它们只包含视图中需要的数据模型的属性——参考What is ViewModel in MVC?
-
为了扩展斯蒂芬的评论,一天结束,你必须将你的虚拟机映射到你的数据模型,所以你必须提供一些“默认" 您的数据模型要求的值,并在您的应用程序中说明这一点。 Hth.
-
@stephenMuecke 我读了你建议的文章。基本上我正在构建一个简单的销售订单表格。我在 ViewModel 中传递
Products列表,我必须向用户显示。用户将从列表中选择产品,输入数量、折扣、支付金额等。其他 ViewModel 类是SaleOrder和SaleOrderDetail。这些将由用户填写并回发。我想要一个捆绑包中的所有模型,我想称之为“ViewModel”。不是吗?或者您建议的一些更好的方法。 -
但是您没有使用视图模型(尽管您将其命名为“SaleOrderViewModel”)。视图模型(编辑时)不应包含数据模型
标签: asp.net-mvc entity-framework post model-view-controller viewmodel