这是我的ViewModel
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的某些属性。其他属性为null或不需要发布。
这是我的帖子方法
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([SaleOrderViewModel saleOrderViewModel)
{
if (ModelState.IsValid)
{
//more code
}
}
但是ModelState.IsValid始终为假。
我如何仅包含和绑定视图模型的某些属性?
答案 0 :(得分:0)
经过一些研究并尝试了不同的方法。我想出了一个解决方案
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Prefix = "SaleOrder", Include = "BillAmount,Balance")] SO sO, [Bind(Prefix = "SaleOrderDetail", Include = "ProductId,Quantity")] List<SOD> sOD)
{
if (ModelState.IsValid)
{
sO.CustomerId = 10;
sO.Date = DateTime.Now;
sO.SaleReturn = false;
db.SOes.Add(sO);
db.SaveChanges();
foreach (SOD sod in sOD)
{
sod.SOId = sO.Id;
}
db.SODs.AddRange(sOD);
db.SaveChanges();
return RedirectToAction("Index");
}
我很高兴,但我不明白post方法如何自动接受两个参数?
在视图中,我已经像这样绑定了我的ViewModel。
@model MYBUSINESS.Models.SaleOrderViewModel