2009-05-01 4 views
2

이의 내가 같이 컨트롤러 액션이 정의되어 있다고 가정 해 봅시다 매개 변수 : 나는 MyModel 유형에 대한 사용자 정의 모델 바인더를ASP.NET MVC 모델 바인딩과 행동

public ActionResult(MyModel model, string someParameter) 
{ 
    // do stuff 
} 

, 그리고 "SomeParameter"라는 양식 필드가있다 모델에 바인딩되지 않은보기에서. ASP.NET MVC가 Request.Form["SomeParameter"] 값을 액션에 대한 "someParameter"인수 값으로 전달하는 것을 어떻게 알 수 있습니까?

답변

1

달리 지정하지 않으면 기본 모델 바인더가 someParameter에 사용되기 때문에. 그리고 기본 모델 바인더는 사용자가 설명하는 것과 정확히 동일합니다.

2

ASP.NET은 리플렉션을 사용하여 호출 할 올바른 메서드를 결정하고 전달할 매개 변수를 작성합니다. FormCollection 배열을 기반으로합니다. 기본적으로 그것은 모델을 볼 수 있습니다. * Keysin 거기 FormCollection["someParameter"] 먼저 Action(model,someParameter)Action(model) 다음 Action() 시도해보십시오. model과 someParameter 인자를 가진 Action을 찾았으므로 인자 타입으로 변환하려고합니다.

그러나 기본적으로 보안 위험을 초래하는 맹목적으로이를 수행하므로 이에 대한 자세한 내용은 this blog post입니다.

누구나 ModelBinding이 훌륭한 방식으로 수행되는 방법을보다 자세하게 설명하는 링크를 게시 할 수 있다면.

0

하나는 액션 메소드의 입력 매개 변수로 같은 이름의 페이지에 HTML을 항목을 가지고있다. 보기에서 EX) 우리가 가진 : 작업 방법 다음

<input name="refNo" type="text"> 

:

public ActionResult getOrders(string refNo) 

그래서, 그것은 단순히 "getOrders"의 입력 매개 변수를 "refNo"의 값을 바인딩 활동 .

관련 문제