2012-09-07 2 views
1

모델을 가지고 있으며 강력한 형식의보기 ViewAModelA으로 입력되었습니다.강력한 형식의 뷰에서 모델 변수 할당

[HttpPost] 
public ActionResult ActionAPost(ModelA mod) { 
    // code 
} 

그것은이 경우 mod에 MODELA 인스턴스에 양식에 살고 있고 값을 바인딩 : 당신이 액션을 선언하는 경우 아시다시피이 같은 서명 'ActionAPost'말한다.

ViewA :

@ModelAInstance.SomeAttr = ViewBag.SomeAttr; 

가 포스트 작용에 의해 처리됩니다 모델 속성에 staticaly 어떤 값을 할당이 같은 일을하고 싶다.

은 편집 :

이 값은 이전에 ViewBang에 설정되어 있습니다.

+0

시도해 보았지만 @Model에 액세스하려면 View (ModelA) 액션에서 전달해야합니다. 두 가지 다른 인스턴스와 포스트 작업에서 하나만 액세스 할 수 있습니다. 매개 변수에서 수신하는 액션입니다. – loki

답변

4

따라서보기에는 이름 속성이 모델 및 속성의 객체 경로를 반영하는 숨겨진 요소가 있습니다. 그것은 당신의 POST 액션에 다시 바인딩이 방법은 당신이 원하는 어떻게

예 :

<input type="hidden" name="SomeAttr" value="@ViewBag.SomeAttr" /> 

면도기와 면도날로 다음 GET 요청에서 모델의 값을 설정 ViewBag

:

@Html.Hidden("SomeAttr", (object)ViewBag.SomeAttr); 

@Html.HiddenFor(m => m.SomeAttr, new { value = ViewBag.SomeAttr });

+0

혼란을 가져 주어서 죄송합니다. 과제는 면도기 진술서에서 수행해야합니다. 편집을 참조하십시오. – loki

+0

두 번째 방법은 왜 작동했는지, 숨겨진 입력 인 tnx가 나에게 발생하지 않은 이유입니다. – loki

+0

실험 방법은 다음과 같습니다. – Gabe

1

이 당신의 ViewModel 게시물 액션에서 지금

<input type="hidden" name="SomeAttr" value="@ViewBag.SomeAttr" /> 

의 속성 이름과 같은 이름으로, 양식의 숨겨진 변수를 만들고, 당신은 SomeAttr 속성

public ActionResult Add(ModelA model) 
{ 
    //check for model.SomeAttr here 

} 
에 액세스하여이를 얻을 수 있습니다

모델을 가정하면 ModelASomeAttr 속성을 갖습니다. MVC Modelbinding은 게시 될 때 입력을 모델 객체에 바인딩합니다.

관련 문제