Я хочу передать модель в метод Post для контроллера. Когда метод вызывается, он показывает нулевое значение для содержимого и 0 для Id. В идеале он должен содержать значения модели, которые она отображала.Pass Model от View до Controller
Вид:
@model MvcApplication4.Models.WorldModel
@{
ViewBag.Title = "Information";
Layout = "~/Views/Shared/_Layout.cshtml";
}
@using (Html.BeginForm("Information", "World", FormMethod.Post))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<br />
@Html.DisplayFor(model => model.Id)
<br />
@Html.DisplayFor(model => model.Content)
<br />
<input type="submit" value="Next" />
}
Контроллер: Метод вызывается, когда нажмите на кнопку отправки.
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Information(WorldModel worldModel)
{
CandidateSession cs = (CandidateSession)Session["Can"];
var can = cs.Candidates.Where(x => x.IsNameDispalyed == false);
if (can.Count() > 0)
{
var can1 = can.First();
can1.IsNameDispalyed = true;
Session["Can"] = cs;
return View(new WorldModel() { Id = can1.Id, Content = can1.Name });
}
return View(new WorldModel());
}
Модель:
public class WorldModel
{
public int Id { get; set; }
public string Content { get; set; }
}
Спасибо за помощь. Я включил скрытое поле для идентификатора и контента в поле отображения, теперь значения передаются. Но старые значения не очищаются, он показывает старые значения, даже если новые значения присваиваются полю id и содержимого и отображаются на экране. Почему это так? – user2323308
Мне нужно позвонить ModelState.Clear(). Каждый раз получать новые значения. – user2323308
Действительно, обычно, когда вы возвращаетесь к просмотру из вашего действия post, это означает, что проверка не удалась, и вы хотите отобразить представленные данные, чтобы исправить их. Вот почему 'ModelState' сохраняет старые значения. Когда он будет успешным, вы обычно перенаправляете на действие «GET», при необходимости, с некоторыми параметрами. Но вы также можете очистить «ModelState», если он вам подходит. –