Я создаю сайт, на котором есть продукты, и вы можете оставлять отзывы о товарах. У меня есть ссылка на страницу продукта, который говорит: «Оставить отзыв»ActionLink и параметры
В моем коде это выглядит следующим образом:
@Html.ActionLink("Leave a Review", "AddReview", "Product", new { id = Model.ProductId }, null)
Когда я запускаю мое приложение ссылка работает нормально, но когда я представить обзор он падает и говорит:
словарь параметров содержит нулевой элемент для параметра «идентификатора» из ненулевых типа «System.Int32» для метода «System.Web.Mvc.ActionResult продукт (System.String , Int32) 'в ' MyProject.Controllers.P roductController. Необязательный параметр должен быть ссылочным типом, нулевым типом или быть объявлен как необязательный параметр . Имя параметра: параметры
Эта ошибка возникает только в том случае, если у меня есть new { id = Model.ProductId }
в моей ActionLink.
Это может показаться, что ProductId имеет значение null, но это невозможно. Чтобы загрузить страницу продукта в первом месте PRODUCTID необходим, плюс я использую RenderAction, который отображает отзывы об этом продукте на странице, используя тот же идентификатор:
@{Html.RenderAction("Reviews", "product", new { id = Model.ProductId});}
Так в основном, почему я получаю эту ошибку ? Это связано с тем, что существует метод GET и POST AddReview? Я не думаю, что это должно учитывать, что ссылка будет тянуть GET, и когда я отправлю форму, она должна быть POST. Как я могу получить productId в форме?
EDIT Чтобы ответить на некоторые вопросы:
Моя форма выглядит следующим образом:
@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>
EDIT
После исправления проблемы связи я понял, что причина, по которой я все еще получал сообщение об ошибке, была вызвана нарушением вызова RedirectToAction в моем контроллере. Какая глупая ошибка!
Как выглядит код для создания формы? –
Как выглядит тег '' в сгенерированном HTML при просмотре источника? –
Я добавил оба из них в мой оригинальный пост. – Johannes