我在視圖頁面上有一個按鈕,通過傳遞 ID 值連接到另一個控制器。
控制器
public class CartController : Controller
{
......
[Route("index")]
public IActionResult Index()
{
var cart = SessionHelper.GetObjectFromJson<List<Item>>(HttpContext.Session, "cart");
ViewBag.cart = cart;
return View();
}
[Route("buy/{customerID}/{invetoryID}")]
public async Task<IActionResult> Buy(int? customerID, int? invetoryID)
{
if (customerID == null || invetoryID == null)
{
return NotFound();
}
Customer custData = await _context.Customers.FindAsync(customerID);
var intData = await _context.Inventories.FindAsync(invetoryID);
if (SessionHelper.GetObjectFromJson<List<Item>>(HttpContext.Session, "cart") == null)
{
List<Item> cart = new List<Item>();
cart.Add(new Item
{
Custom = custData,
Inventory = intData,
Quantity = 1
});
SessionHelper.SetObjectAsJson(HttpContext.Session, "cart", cart);
}
return RedirectToAction("Index");
} }}
模型
public class Item
{
public Customer Custom { get; set; }
public Inventory Inventory { get; set; }
public int Quantity { get; set; }
}
視圖如下
<table cellpadding="2" cellspacing="2" border="1">
.......
@{var dataCart = ViewBag.cart; }
@foreach (var item in ViewBag.cart)
{
<tr>
<td>@item.Inventory.StrainId</td>
<td>@item.Inventory.StrainName</td>
<td>@item.Quantity</td>
</tr>
}
</table>
<br>
<a asp-action="Index" asp-controller="Inventories" asp-route-id="@dataCart.Custom.CustomerId">Select</a>
</body>
</html>
當我加載頁面時它拋出錯誤它拋出錯誤 RuntimeBinderException: 'System.Collections.Generic.List<JAXSurplusMouseApp.Models.Item>' does not contain a definition for 'Custom'

即使 Item 模型和 ViewBag 有Custom它也沒有定義。誰能告訴我在這里缺少什么。如果我沒有按鈕,那么頁面加載得很好。
<a asp-action="Index" asp-controller="Inventories" asp-route-id="@dataCart.Custom.CustomerId">Select</a>
uj5u.com熱心網友回復:
你必須修正你的觀點
@if ( @ViewBag.cart != null && ViewBag.cart.Count>0)
{
<a asp-action="Index" asp-controller="Inventories" asp-route-id=" @ViewBag.cart[0].Custom.CustomerId">Select</a>
}
````
or place ancor inside of foreach
````
@foreach (var item in ViewBag.cart)
{
<tr>
<td>@item.Inventory.StrainId</td>
<td>@item.Inventory.StrainName</td>
<td>@item.Quantity</td>
<td>
<a asp-action="Index" asp-controller="Inventories" asp-route-id="@item.Custom.CustomerId">Select</a>
</td>
</tr>
}
</table>
<br>
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/330735.html
