我正在构建一个有产品的网站,您可以在产品上留下评论。我有说“发表的评论”ActionLink和参数
在我的代码,它看起来像这样的产品页面上的链接:
@Html.ActionLink("Leave a Review", "AddReview", "Product", new { id = Model.ProductId }, null)
当我运行我的应用程序的链接工作正常,但是当我提交评论它崩溃并说:
参数字典包含 非可空类型“System.Int32”参数“身份证”的方法 “System.Web.Mvc.ActionResult产品(System.String一个空项,Int32)'in 'MyProject.Controllers.P roductController”。可选参数 必须是引用类型,可为空类型,或者声明为 可选参数。参数名称:参数
只有在我的ActionLink中有new { id = Model.ProductId }
时才会出现此错误。
这可能看起来像ProductId为空,但这是不可能的。为了在第一时间加载了产品页面需要一个产品编号,再加上我使用,使用的是相同的ID显示有关页面上的商品评论一的RenderAction:
@{Html.RenderAction("Reviews", "product", new { id = Model.ProductId});}
所以基本上,为什么我收到此错误? 它是否与GET和POST AddReview方法有关?我不认为它应该考虑链接将拉动GET,当我提交表单时,它应该是一个POST。我如何将productId放入表单中?
编辑 要回答一些问题:
我的形式如下:
@using (Html.BeginForm("AddReview", "Product"))
{
<p>Title @Html.TextBoxFor(x => x.Title)</p>
<p>Rating: @Html.TextBoxFor(x => x.Rating)</p>
<p>Body: @Html.TextBoxFor(x => x.Body)</p>
<input type="submit" value="Save"/>
Html.ActionLink("Cancel", "Index", "Home");
}
我生成的标签是这样的:
<a href="/Product/AddReview?ProductId=9">Leave a Review</a>
编辑
在修复了链接问题后,我意识到我仍然收到错误的原因是因为RedirectToAction调用在我的控制器中断了。多么愚蠢的错误!
什么代码来创建窗体看起来像? – 2012-04-16 16:30:31
当您浏览源代码时,''标签如何在生成的HTML中查看? – 2012-04-16 16:35:24
我已将这两个添加到我原来的帖子。 – Johannes 2012-04-16 16:37:24