Я новичок в ASP.NET MVC и пытаюсь создать очень простой сайт типа блога, чтобы узнать, как все работает.Но у меня возникла проблема при публикации из формы комментария в модель с нулевым значением, и я не могу сказать, почему.
На странице поста в блоге у меня есть ссылка «Добавить комментарий», которая вызываетнекоторые JQuery для визуализации частичного представления, строго типизированного для CommentModel.Ссылка также передает идентификатор сообщения в блоге, а частичное кодируется следующим образом:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Blog.Models.CommentModel>" %>
<% using (Html.BeginForm())
{ %>
<%: Html.HiddenFor(x => x.Post.ID) %>
<%: Html.HiddenFor(x => x.CommentID) %>
<%: Html.TextBoxFor(x => x.Name) %><br />
<%: Html.TextBoxFor(x => x.Email) %><br />
<%: Html.TextBoxFor(x => x.Website) %><br />
<%: Html.TextAreaFor(x => x.Comment) %><br />
<input type="submit" value="submit" />
<% } %>
Модель комментариев проста и выглядит следующим образом (я еще не применял никакой проверки или чего-либо еще):
public class CommentModel
{
public BlogPost Post { get; set; }
public int CommentID { get; set; }
public string Name { get; set; }
public string Email { get; set; }
public string Website { get; set; }
public string Comment { get; set; }
}
Затем предполагается опубликовать простое действие контроллера, которое добавит комментарий в базу данных и вернет пользователя на страницу.Для простоты я удалил большую часть кода, но он выглядит примерно так:
[HttpPost]
public ActionResult CommentForm(CommentModel model)
{
if (ModelState.IsValid)
{
}
else
{
}
}
Все работает, как и ожидалось, за исключением того, что при публикации формы комментария модель комментария является нулевой.Я не могу понять, почему это ноль.Когда я просматриваю источник визуализированного частичного представления, я вижу, что «Post.ID» заполнен правильным идентификатором, но он теряется при отправке формы.
Я что-то упускаю здесь из-за чего-то очевидного?Я настраивал формы, подобные этому в прошлом, и он работал нормально, я не могу понять, почему это не сейчас.Заранее спасибо.
Позже Редактировать:
Я неправильно набрал код и изменил public ActionResult CommentForm(CommentModel model)
с public ActionResult CommentForm(CommentModel comment)
, который вызывал проблему.
Спасибо запомощь.