2009-02-04 4 views
3

양식이 서버에 다시 게시되면 컨트롤러 작업에서 HTTP Post에 포함 된 값을 조작, 변경 또는 설정할 수 있습니까? 사용자가 입력 한 특정 텍스트 상자 값을 삭제하여이 값을 항상 다시 입력해야합니다 (예 : 비밀번호 입력란). 기본적으로 HTML 도우미는 HTTP POST 정보에서 HTML 컨트롤의 초기 값을 추출합니다.ASP.NET MVC - HTTP 포스트 조작

답변

7

사용자 정의 ModelBinder가 필요하지 않습니다.

[Bind(Exclude="Foo,Bar")] 
    public ActionResult Insert(T model) 

이제 Foo와 Bar는 null입니다.

이것은 사용자가 묻는 바를 나타내지 만 실제로 사용자가 의도 한 내용이 아닌 것은 확실합니다. :)

내 생각 엔 사용자가 입력 한 암호 (또는 무엇이든)를보아야한다는 것입니다. 그러나 예를 들어 다른 필드를 다시 입력해야하는 경우 양식을 다시 표시 할 때 암호를 채우지 않으려 고합니다. 좋은 생각이야. 그러나이 경우 모델 바인더는 입력하지 않습니다.보기를 다시 표시하기 전에 필드를 null로 설정하면됩니다.

public ActionResult Insert(T model) 
    { 
     try 
     { 
      Repository.Add(model); 
     } 
     catch (Exception ex) 
     { 
      ViewData["Message"] = ex.Message; 
      model.Password = null; 
      return View(model); 
     } 
     // success! 
     return RedirectToRoute(//... 
    } 
0

게시 된 데이터를 조작 할 수있는 사용자 정의 ModelBinder를 만들 수 있습니다.

ScottGu's post이 주제를 다룹니다.

관련 문제