Может быть, я что-то упустил, но когда у меня есть форма, которая отправляет обратно на то же действие, значение текстового поля возвращается к старому значению.В следующем примере следует увеличивать значение в текстовом поле на каждом POST.Этого не происходит, значение в модели увеличивается, и модель действительна.
ЕСЛИ я очищаю состояние модели в действии HttpPost (комментарий в коде), все работает как положено.
Я что-то упустил?
Вот код:
Модель:
public class MyModel
{
public int MyData { get; set; }
}
Вид:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage<MvcApplication1.Models.MyModel>" %>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<% using (Html.BeginForm()) {%>
<%: Html.TextBoxFor(m => m.MyData)%> (<%: Model.MyData%>)
<%: Html.ValidationMessageFor(m => m.MyData) %> <br />
State :<%: ViewData["State"] %> <br />
<input type="submit" />
<% } %>
</asp:Content>
Контроллер:
public class HomeController : Controller
{
[HttpGet]
public ActionResult Index()
{
return View(new MyModel { MyData = 0 });
}
[HttpPost]
public ActionResult Index(MyModel myModel)
{
// ModelState.Clear();
ViewData["State"] = "invalid";
if (ModelState.IsValid)
ViewData["State"] = "Valid";
var model = new MyModel { MyData = myModel.MyData + 1 };
return View(model);
}
}