2011-04-21 6 views
7

bool을 막는 wierd 시나리오를 발견했습니다. 제어기에 올바르게 다시 게시됩니다. 매우 구체적인 문제이므로 재현 단계를 따르십시오.ASP.Net MVC3 모델 바인딩 버그

응용 프로그램은/Home/URL 대신/Virtual/Home/Test가되도록 IIS의 가상 폴더로 배포해야합니다.

홈 컨트롤러 :

[HttpGet] 
public ActionResult Test(int? temp, bool? testBool) 
{ 
    return View(testBool); 
} 

/홈/시험보기 (면도기 cshtml) : 후 다시 부울에

@model bool? 
@{ 
    ViewBag.Title = "Test"; 
} 

@using (Html.BeginForm("Test", "Home", FormMethod.Get)) 
{ 
    @Html.CheckBox("testBool", Model ?? false, new { onchange = "this.form.submit();" }) 
    @Html.Label(Model == true ? "True" : "False") 
} 

? int 때문에 컨트롤러로 보내지 않습니까? 매개 변수 목록에 표시됩니다. 이것은 bool을 넣음으로써 해결할 수 있습니까? int 앞에? 매개 변수 목록에 있지만 분명히 이것을 할 필요는 없습니다. IIS의 Virtual 폴더에 없으면 제대로 작동합니다. bool 대신 bool을 게시하더라도 POST 메서드를 사용하는 경우에도 동일한 문제가 발생합니다. 작동하지만 가상 폴더에없는 경우에는 필요하지 않으므로이 작업을 수행하지 않아도됩니다.

다른 사람이 이것을 경험했는데 왜 바인딩이 실패하는지 또는 MVC3의 버그 일 뿐이라는 것을 설명하는 사람이 있습니까?

버그 일 뿐이며 누구나 버그 리포트를 제출하기위한 적절한 ASP.Net MVC 채널을 알고 있습니까?

업데이트 : 난 당신이 액션 매개 변수에 널 (NULL) 변수의 숫자가있는 경우에만 첫 번째 이제까지 작동하며 다른 모든 채워 할 수 없게됩니다 것으로 나타났습니다

. 이것은 설계 상 또는 버그인지 누구나 알고 있습니까?

답변

1

분명히 이것은 여전히 ​​문제입니다. 지금까지 해결되었을 거라고 생각했습니다. 이 특정 버그를 해결하는 한 가지 방법은 Application_Start 메소드에이를 추가하는 것입니다.

ModelMetadataProviders.Current = new DataAnnotationsModelMetadataProvider(); 

추가하면 nullable 매개 변수가 적절히 동작 할 수 있습니다. 12 월에 RC2로 알려진이 버그가 여전히 존재한다는 사실에 놀랐습니다.

해킹 된 아티클의 경로 선택적 매개 변수 간의 차이점은 예를 들어 라우팅에 문제가 없다는 것입니다. 이 경우 데이터를 게시 (또는 쿼리 문자열)하고 nullable 액션 매개 변수를 올바르게 채우지 않습니다. 나는 mvc3 소스를 확인한 후 이것이 제대로 작동하고 예상되는 동작의 소스 결과를 통해 실행되는 것으로 보이는 디버깅 문제가 왜 발생해야하는지 알지 못합니다. Scott Guthrie가 지금까지해야한다고 말 했음에도 불구하고이 문제가 해결되지 않았다는 것이 확실합니다 ...

+0

그게 효과가! 우수한. 지시 한대로 Global.asax.cs의 Application_Start 메소드에 추가 한 행을 추가하십시오. 아무도이 문제에 대한 해답을 갖지 않을까 걱정하기 시작했습니다. 다행히도 버그는 향후 업데이트에서 MVC 팀에 의해 해결 될 수 있습니다. 당신의 도움을 주셔서 감사합니다. –

+0

굉장, @ 크리스. 다행 이네. 이상하게도 로컬 디버깅에서 작동하여 내 테스트 서버에 어떤 버전이 설치되었는지 궁금합니다 ...:) – Buildstarted

+0

어쩌면 당신은 MVC3의 최신 버전을 가지고 있습니다. 새 버전이 있는지 확인해야합니다./Virtual/Home/Test와 같은 가상 디렉터리에 설치 했습니까? 제대로하지 않으면 꽤 많은 비트가 있습니다. 모든 게시물이 내 게시물에 자세히 설명되어 있습니다. –

3

This 기사가 유용 할 수 있습니다.

+0

이것은 비슷한 버그이며 관련되었을 수 있습니다. 불행히도 버그 및 해결 방법은 연속적인 선택적 경로 값과 관련이있는 반면 내 문제는 URL의 매개 변수 뒤에 오는 것과 관련이 있습니다. –

+0

(+1) 링크 된 기사에 게시물이 남았는지 확인하려면 의견을 얻을 수도 있습니다. –

관련 문제