【发布时间】:2014-11-09 00:16:36
【问题描述】:
我有一个执行以下操作的控制器操作:
- 从表单中获取产品型号列表。
- 循环选择产品 (IsSelected == true) 并将其添加到 Account 模型。
- 保存更改并重定向到另一个操作,传递 AccountID。
- ID 被正确接收,找到正确的帐户并将其传递给 View。
- 然后视图解析帐户并显示添加到上述帐户的产品列表。
但是,MVC 不断抛出错误“序列不包含匹配元素”,我正在努力找出原因。
获取产品列表并将其添加到用户帐户的帐户控制器:
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> AddProduct(List<Product> products)
{
//var acc = FetchCurrentUserAccount();
if (db.Accounts != null)
{
var acc = db.Accounts.Find(UserManager.FindByIdAsync(User.Identity.GetUserId()).Result.Account.AccountID);
foreach (var product in products)
{
if (product.IsSelected)
{
product.PaymentStatus = enPaymentStatus.Pending
acc.ProductsPurchased.Add(product);
}
}
await db.SaveChangesAsync();
return RedirectToAction("Pay", "Products", new {id = acc.AccountID} );
}
return HttpNotFound();
}
Product Controller 获取一个 AccountID,找到该帐户并将其作为模型传递给 View:
[HttpGet]
public ActionResult Pay(int? id)
{
var acc = db.Accounts.Find(id);
return View(acc);
}
视图本身:
@using PPPv2.Models
@model Account
@{ var subtotal = 0.0d;}
<h2>Payment:</h2>
@if (Model != null)
{
<h4>Thank you @Model.Salutation @Model.LastName</h4>
<h4>Please check that the product(s) and amounts below are correct before completing your purchase.</h4>
foreach (var item in Model.ProductsPurchased)
{
<div>
@Html.DisplayFor(modelItem => item.Name)
<div>
@Html.DisplayFor(modelItem => item.Price)
@{ subtotal += item.Price; }
</div>
</div>
}
<div>
Total to pay:
<div>
@Html.Display(String.Format("£{0:#,###0.00}", subtotal))
</div>
</div>
@Html.ActionLink("Pay", "Process", "Products", new {id = Model.ProductsPurchased.First(x => x.PaymentStatus == enPaymentStatus.Sold)}, new {@class = "btn btn-warning"})
}
else
{
<div>
No products were found in your cart... Odd...
<div>
@Html.ActionLink("Select a product", "AddProduct", "Account", null, new {@class = "btn btn-warning"})
</div>
</div>
}
注意事项:
- 在帐户控制器中的 foreach(var product in Products) 循环期间;产品已正确填充。然而,当添加到帐户时,列表的 Count 正确增加并且 PaymentStatus 正确,但其余字段为空。
- 创建一个新的 Product() 并将每个单独的属性从 product 推入它会产生相同的结果。
有什么想法吗?
【问题讨论】:
标签: c# entity-framework asp.net-mvc-5