아마도 뭔가가 누락되었지만 같은 작업으로 다시 게시되는 양식이있을 때 텍스트 값이 이전 값으로 되돌아갑니다. 다음 예제는 각 POST에서 텍스트 상자의 값을 증가시켜야합니다. 이는 발생하지 않으며 모델의 값이 증가하고 모델이 유효합니다.Modelstate가 포스트 백에서 유효한 동안 텍스트 상자가 이전 값으로 되돌아갑니다.
그러나 HttpPost Action (코드의 주석)에서 modelstate를 지우면 모든 것이 예상대로 작동합니다.
나는 뭔가를 놓친가요?
모델 :
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>
컨트롤러 :
여기 코드입니다
감사합니다. 나는 ModelState를 지우는 것이 효과가있을 것이라는 것을 알고 있었고, 나는 그저 유효한 모델을 위해해야만했던 이유를 알지 못했다. 첫 번째 링크는 Brad Wilson이 설계 상으로는 설명하고 모델이 유효한지 여부에 관계없이 뷰는 항상 ModelState를 사용합니다. 또한 작동하는 솔루션은 모델을 반환하지 않고 동작으로 리디렉션하는 것입니다. 다시보기 (사용 가능한 ModelState를 사용하게됩니다). –
많은 감사! 나를 도와 줬어 .. 잘 했어 .. – Aaron
분명히 모델 상태를 지우면 안된다. http://blogs.msdn.com/b/simonince/archive/2010/05/05/asp-net-mvc- s-html-helpers-render-the-wrong-value.aspx –