我希望将模型传递给控制器的Post方法。当该方法被调用时,content的值显示为空,Id的值显示为0。理想情况下,它应该包含所显示的模型的值。
视图:
@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; }
}
ModelState
会保留旧值的原因。如果验证成功,通常会重定向到GET
操作,并在需要时传递一些参数。但是,如果适合您,也可以清除ModelState
。 - Réda Mattar