2015-01-08 2 views
0

Asp.Net MVC를 시작하려고합니다. 이것은 내 cshtml에 : 양식은 내가 이전 값이로 유지 아직 비어하기 위해 Username 속성을 삭제하고 게시 할 때 당신이 볼 수 있듯이모델 값이 지워지지 않는 이유는 무엇입니까?

public class HomeController : Controller 
    { 
     public ActionResult Index() 
     { 
      ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";    
      return View(); 
     } 

     [HttpPost] 
     public ActionResult Index(TestModel testModel) 
     { 
      ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application."; 
      testModel.Username = string.Empty; 

      return View(testModel); 
     } 
    } 

:

@using (Html.BeginForm("Index", "Home", FormMethod.Post, new { @class = "form-horizontal" })) 
{ 
    @Html.TextBoxFor(m => m.Username, new { @class = "form-control" }) 
    <input type="submit" value="Submit" /> 
} 

이 내 컨트롤러입니다. 내가 뭘 놓치고 있니?

+0

브라우저 자동 완성이 아닙니까? –

+0

뷰에 중단 점을 넣고 모델의 값이 무엇인지 확인할 수 있습니까? – Sefa

+0

인덱스 GET 뷰가 모델을 전달하지 않으므로 testModel.Username을 어떻게 처리해야하는지 알 수 있습니까? – markpsmith

답변

1

내 지역의 환경과 당신이 포스트 방법 내에서 다음 줄을 사용 할 필요가 당신의 문제를 재현 할 수 있었다

ModelState.Clear(); 

귀하의 방법은

를 다음과 같이한다
[HttpPost] 
public ActionResult Index(TestModel testModel) 
{ 
    ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application."; 
    testModel.Username = string.Empty; 
    ModelState.Clear(); 
    return View(testModel); 
} 
+0

우수 형제 – Jack

+2

이것은 기술적으로 정답이지만이 접근법을 다시 생각해보십시오. POST 요청 후에 뷰를 반환하면 좋은 디자인 패턴으로 간주되지 않습니다. 일반적으로 모든 POST 요청은 적절한 GET 조치로 리디렉션되어야합니다. 자세한 정보 [여기] (http://en.wikipedia.org/wiki/Post/Redirect/Get). – ljubomir

+1

[이 답변] (http://stackoverflow.com/questions/26654862/textboxfor-displaying-initial-value-not-the-value-updated-from-code/26664111#26664111)의 마지막 부분은 _Why_ –

-1

보기를 어떤 모델과 함께 사용해야하는지 알 수없는 것 같습니다.

@Model TestModel 

어딘가에 있지만 여기를 복사하는 것을 잊어 버리셨습니까?

다니엘

+1

예이 답변이 없습니다 – Jack

관련 문제