У меня возникла проблема с отправкой ViewModel обратно контроллеру, но ViewModel не отображается правильно из представления в контроллер.ASP.Net MVC Postback from View to Controller показывает нулевые значения
TopicID и Содержимое должны содержать значения, однако, когда вывешены назад, они не:
VS Debug:
ViewModels:
public class PostViewModel
{
public int PostId { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public string Author { get; set; }
public DateTime DateOfTopic { get; set; }
}
public class ReplyViewModel
{
public int TopicId { get; set; }
public string Content { get; set; }
}
public class PostListAndReplyVM
{
public List<PostViewModel> PostViewModel { get; set; }
public ReplyViewModel ReplyViewModel { get; set; }
}
Вид:
@model centreforum.Models.PostListAndReplyVM
@using (Html.BeginForm()) {
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<fieldset>
<legend>Post</legend>
@Html.HiddenFor(model => model.ReplyViewModel.TopicId)
<div class="editor-label">
@Html.LabelFor(model => model.ReplyViewModel.Content)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.ReplyViewModel.Content)
@Html.ValidationMessageFor(model => model.ReplyViewModel.Content)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
Сгенерированный HTML:
<form action="/Post/List/7/" method="post"><input name="__RequestVerificationToken" type="hidden" value="xxxxxxxxxxxxx" /> <fieldset>
<legend>Post</legend>
<input data-val="true" data-val-number="The field TopicId must be a number." data-val-required="The TopicId field is required." id="ReplyViewModel_TopicId" name="ReplyViewModel.TopicId" type="hidden" value="7" />
<div class="editor-label">
<label for="ReplyViewModel_Content">Content</label>
</div>
<div class="editor-field">
<input class="text-box single-line" id="ReplyViewModel_Content" name="ReplyViewModel.Content" type="text" value="" />
<span class="field-validation-valid" data-valmsg-for="ReplyViewModel.Content" data-valmsg-replace="true"></span>
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
</form>
Как вы можете видеть из сгенерированного HTML, то TopicID, безусловно, имеет значение: value="7"
Может кто-нибудь видит, где проблема между сообщением формы и контроллером, который ожидает ReplyViewModel?
Спасибо,
Марку
Можете ли вы показать метод HTTPGET публичного списка ActionResult()? –