gpt4 book ai didi

c# - 如何解决参数字典包含不可为空类型 'productId' 的参数 'System.Int32' 的空条目

转载 作者:行者123 更新时间:2023-11-30 23:28:56 27 4
gpt4 key购买 nike

我的观点如下:

<div class="col-sm-9 padding-right">
<div id="bookListDiv">
<!--features_items -->
<h2 class="title text-center">Features Items</h2>
@{Html.RenderAction("ProductList", "Product", new { Model = Model });}
</div>
</div>

在 View 中,您可以看到我已经呈现了一个 Action ,如下所示:

[ChildActionOnly]
public ActionResult ProductList(List<Product> Model)
{
return PartialView(Model);
}

上面的操作调用了部分 ProductList 部分 View ,如下所示:

@model List<EShopperTheme.Domain.Entities.Product>

@foreach (var item in Model)
{
<div class="col-sm-4">
<div class="product-image-wrapper">
<div class="single-products">
<div class="productinfo text-center">
<img src="@Url.Action("GetMainPicture", "Product", new { item.ProductID })" alt="" />
<h2>@item.ProductCategory</h2>
<h2>@item.ProductPrice AFN</h2>
<p>@item.ProductName</p>

<a href="#" class="btn btn-default add-to-cart"><i class="fa fa-shopping-cart"></i>Add to cart</a>
</div>
<div class="product-overlay">
<div class="overlay-content">
<img src="@Url.Action("GetSecondPicture", "Product", new { item.ProductID })" alt="" />
<h2>@item.ProductPrice AFN</h2>
<p>@Html.ActionLink(item.ProductName, "ProductDetails", new { item.ProductID })</p>
@using (Html.BeginForm("AddToCart", "Cart"))
{
@Html.HiddenFor(x => item.ProductID)
@Html.Hidden("returnUrl", Request.Url.PathAndQuery)
<input type="submit" class="btn btn-default add-to-cart" value="Add to cart" />
}
</div>
</div>
</div>
</div>
</div>
}

正如您在部分中看到的,我有一个表单,在表单内有提交 AddToCart 的按钮类型。问题是当我在运行应用程序时单击添加到购物车按钮时出现此错误。异常详细信息:System.ArgumentException:参数字典包含不可为空类型的参数“productId”的空条目

'System.Int32' for method 'System.Web.Mvc.RedirectToRouteResult AddToCart(EShopperTheme.Domain.Entities.Cart, Int32, System.String)' in 'EShopperTheme.Controllers.CartController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter.
Parameter name: parameters

我的购物车 Controller 中的操作 AddToCart 如下:

public RedirectToRouteResult AddToCart(Cart cart, int productId, string returnUrl)
{
Product product = repository.Products
.FirstOrDefault(p => p.ProductID == productId);
if (product != null)
{
cart.AddItem(product, 1);
}
return RedirectToAction("Index", new { returnUrl });
}

我该如何解决这个问题?

最佳答案

您使用 @Html.HiddenFor(x => item.ProductID) 生成隐藏输入

<input type="hidden" name="item.ProductID" .. />

但它需要是 `name="ProductID"。删除输入,而是使用表单中的路由值

@using (Html.BeginForm("AddToCart", "Cart", new { ProductID = item.ProductID} ))

或者你可以使用

@Html.Hidden("ProductID", item.ProductID)

旁注:您的子操作是不必要的,您可以在 View 中使用 @{ Html.RenderPartial("ProductList", Model;}

关于c# - 如何解决参数字典包含不可为空类型 'productId' 的参数 'System.Int32' 的空条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35758055/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com