2012-03-02 3 views
1

나는 두 개의 매개 변수를 가진 get 작업을 가지고 있습니다. 볼 때 나는 행동을 취한 후에 채우는 형태를 가지고 있습니다. 액션은 수신 된 파라미터를 사용하여 모델의 인스턴스를 생성하지만, 파라미터가 특별한 값을 가지면 액션은 파라미터에도 불구하고 일부 기본값을 모델링하도록 설정됩니다. 그 작업 후에 모델로 뷰를 반환합니다. 문제는 View에서 모델을 변경 한 후에 수정 된 모델이 아니라 매개 변수의 데이터를 표시한다는 것입니다.보기는 모델 변경에 영향을주지 않습니다.

답변

3

모든 HTML 도우미는 모델 자체에서 바인딩 할 때 및 그 이후에 ModelState를 먼저 확인하기 때문에 이러한 상황이 발생합니다. 그래서 당신은 POST의 부분이 변화가보기에 반영하려는 경우 먼저 ModelState에서 제거해야합니다 요청했다 일부 값을 변경하려는 경우 :

[HttpPost] 
public ActionResult SomeAction(MyViewModel model) 
{ 
    // We remove the Bar property that was part of the request because 
    // we modify its value here 
    ModelState.Remove("Bar"); 
    model.Bar = "Some modified value"; 

    return View(model); 
} 

이 가정을 그 해당보기 당신은 그것에 대한 입력 필드가 있습니다 :

@Html.EditorFor(x => x.Bar) 
+0

사실 저는 GET 요청을 사용하고 있습니다 만, 당신의 솔루션은 잘 작동합니다. 고마워요! 친애하는. – Paul

관련 문제