这两天我试图解决这个问题。不幸的是我做不到。我不明白为什么我的“表单”将空值发送到某个类。你知道我该怎么做吗?真的这个问题让我很紧张。
参数字典包含“SportsStore.WebUI.Controllers.CartController”中方法“System.Web.Mvc.RedirectToRouteResult AddToCart(Int32, System.String)”的不可为空类型“System.Int32”的参数“Id_tow”的空条目'。可选参数必须是引用类型、可空类型或声明为可选参数。参数名称:parameters 描述:当前web请求执行过程中发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:System.ArgumentException:参数字典包含不可为空类型“System.Int32”的参数“Id_tow”的空条目,用于“System.Web.Mvc.RedirectToRouteResult AddToCart(Int32, System.String)”中的方法SportsStore.WebUI.Controllers.CartController'。可选参数必须是引用类型、可空类型或声明为可选参数。参数名称:参数
源错误:
在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。
这是这个表格:
@model SportsStore.WebUI.Models.SomeView
@using SportsStore.WebUI.HtmlHelpers
@using SportsStore.WebUI.Controllers
@using SportsStore.Entities
@{
ViewBag.Title = "List";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>List</h2>
@foreach (var p in Model.Towar)
{
<div class="item">
<h3>@p.Nazwa</h3>
@p.Opis
@using(Html.BeginForm("AddToCart", "Cart")) {
@Html.HiddenFor(x => @p.Id_tow)
@Html.Hidden("returnUrl", Request.Url.PathAndQuery)
<input type="submit" value="+ Add to cart" />
}
<h4>@p.Cena.ToString("c")</h4>
</div>
}
<h2>List</h2>
@foreach (var b in Model.Kategorie)
{
<div class="item">
<h3>@b.Nazwa</h3>
</div>
}
<div class="pager">
@Html.PageLinks(Model.PagingInfo, x => Url.Action("List",
new {page = x, category = Model.CurrentCategory}))
</div>
在我看来是显示正确的值,但将 null 发送到类(HTML 源)
<div class="item">
<h3>Piłka</h3>
Piłka Firmy Nike
<form action="/Cart/AddToCart" method="post"><input data-val="true" data-val-number="The field Id_tow must be a number." data-val-required="The Id_tow field is required." id="p_Id_tow" name="p.Id_tow" type="hidden" value="1" /><input id="returnUrl" name="returnUrl" type="hidden" value="/" /><input type="submit" value="+ Add to cart" />
</form>
<h4>59,80 zł</h4>
</div>
控制器购物车的一部分,它获取空值:
public RedirectToRouteResult AddToCart(int Id_tow, string returnUrl)
{
Towar product = repository.Towar
.FirstOrDefault(p => p.Id_tow == Id_tow);
if (product != null)
{
GetCart().AddItem(product, 1);
}
return RedirectToAction("Index", new { returnUrl });
}
如果我会让我的价值观一切正常,但这当然不能解决问题
public RedirectToRouteResult AddToCart(int Id_tow = 1, string returnUrl = "www.gmail.com")
{
Towar product = repository.Towar
.FirstOrDefault(p => p.Id_tow == Id_tow);
if (product != null)
{
GetCart().AddItem(product, 1);
}
return RedirectToAction("Index", new { returnUrl });
}
如果没有您的帮助,我将无法解决此问题。谢谢
@foreach (var p in Model.Towar)
{
<div class="item">
<h3>@p.Nazwa</h3>
@p.Opis
@{
int Id_tow = @p.Id_tow;
}
@using(Html.BeginForm("AddToCart", "Cart")) {
@Html.HiddenFor(x => Id_tow)
@Html.Hidden("returnUrl", Request.Url.PathAndQuery)
<input type="submit" value="+ Add to cart" />
}
<h4>@p.Cena.ToString("c")</h4>
</div>
}