我正在構建一個有產品的網站,您可以在產品上留下評論。我有說「發表的評論」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