2011-08-22 5 views
4

텍스트 상자가있는 MVC 응용 프로그램에 양식이 있습니다. 양식을 페이지에 게시하면 모델 값을 수정하고보기를 다시 표시합니다. 텍스트 상자에는 여전히 게시 된 값이 표시됩니다.ASP.net MVC - 텍스트 상자 값이 게시 된 값을 유지합니다.

형태로 무엇이든간에
@using(Html.BeginForm()) { 
    @Html.TextBoxFor(m => m.Foo) 
    <input type="submit" value="Save" /> 
} 

public class TestController : Controller { 
    public ActionResult Index() { 
     return View(); 
    } 

    [HttpPost] 
    public ActionResult Index(MyModel model) { 
     model.Foo += "bar"; 

     return View(model); 
    } 
} 

내가 "바"를 추가하고 다시 폼을 표시하려고 (I 푸에 입력 말할 수) : 여기

는 코드입니다. 그러나 양식이 다시 표시 될 때 나는 foo 만 보았습니다. 왜 이런 일이 벌어지는지를 읽은 것을 기억하지만 지금은 발견 할 수없는 것 같습니다. 나는 이것이 가난한 예임을 안다. 그러나 나는 왜 이것이 이것을하는지, 그리고 대안이 무엇인지 (리다이렉트 이외의 것)를 기억하려고 노력하고있다. 게시 된 양식 값이 아닌 업데이트 된 모델 값을 표시하는 방법이 있습니까?

+0

오타? 'Html.BeingForm()' –

+0

분명히 .. :-) – Dismissile

답변

2

모델 상태를 지울 수 있으며 도우미는 새 값을 표시해야합니다.

[HttpPost] 
public ActionResult Index(MyModel model) { 
    model.Foo += "bar"; 
    ModelState.Clear(); 
    return View(model); 
} 
+0

그건 트릭 덕분 이었어. – Dismissile

+0

의도하지 않은 결과가 발생할 수 있기 때문에 최상의 접근 방식이 아닐 수도 있습니다. [http://stackoverflow.com/questions/1775170/asp-net-mvc-modelstate-clear](http://stackoverflow.com/questions/1775170/asp-net-mvc-modelstate-clear) – brheal

관련 문제