2011-10-04 2 views
1

왜 모델 바인더에는 항상 많은 문제가 있습니까? 나는 다음과 같은 컨트롤러가 있습니다모델 바인더 비통함

namespace X.Web.Controllers 
{ 
    public class ExpertsVM 
    { 
     public string GivenName; 
     public string Surname; 
    } 

    public class AuthController : Controller 
    { 
     [HttpPost] 
     public ActionResult RegisterExpert(ExpertsVM v) 
     { 

을 내보기는 다음과 같습니다

@using X.Web.Controllers 
@model ExpertsVM 

@using (Html.BeginForm("RegisterExpert", "Auth")) 
{ 
    @Html.EditorFor(x => x.GivenName) 
    @Html.EditorFor(x => x.Surname) 

그래서 형태는 다음과 같이 표현됩니다 :

<form action="/Auth/RegisterExpert" method="post"> 
<input class="text-box single-line" id="GivenName" name="GivenName" type="text" value="" /> 
<input class="text-box single-line" id="Surname" name="Surname" type="text" value="" /> 

하지만 액션이 호출됩니다, v 모든 널을 포함합니다. 나는이 같은 조치 선언하는 경우 : 나는 모든 값을 볼

[HttpPost] 
public ActionResult RegisterExpert(FormCollection f) 
{ 

을 ... 그래서 내가 잘못 여기서 뭐하는 거지?

+0

어떤 버전의 Asp.Net MVC를 사용하고 있습니까? – VdesmedT

답변

6

저는 100 % 확실하지 않지만 공용 필드 대신 속성을 사용합니다.

public class ExpertsVM 
{ 
    public string GivenName {get;set;} 
    public string Surname {get;set;} 
} 
+0

내 +1은 어제 똑같은 문제를 해결 한 것입니다! –

+0

비스켓의 아들! 내가 그렇게하는 것은 처음이다. 고마워요 (당신은 흥분한다) – ekkis

2

모델 바인더 모델에 공용 속성을 찾습니다보십시오. VdesmedT의 대답은 맞지만이 점을 강조 (나는 100 % 확신하지 못했다. 나는 그렇다)했다.

또한 수행하여 자신에게 사용하는 문에서도 중 하나를 아끼지 수 :

@model X.Web.Controllers.ExpertsVM 

것은 내가 VdesmedT의 answser을 upvoted했다. 그걸 답으로 표시해야합니다.

+0

고마워요! 나도 그래. 당신의 우아함을 위해 +1 : – VdesmedT

+0

감사합니다 (당신도 +1받습니다)! – ekkis