2012-01-23 4 views
1

양식이 ASP.NET MVC3/면도기로 작성되었습니다. 양식 게시는 Firefox와 Chrome에서 완벽하게 작동하지만 Internet Explorer에서 어떤 이유로 "제출"버튼이 응답하지 않습니다.양식 MVC3/면도기의 제출 단추가 Internet Explorer에서 작동하지 않습니다.

클라이언트 쪽 필드 유효성 검사에 실패하면 예상대로 유효성 검사 메시지가 표시됩니다. 그러나 뷰의 모델은 IValidatableObject을 구현하고 Validate()을 무시하며 데이터로 인해 유효성 검사 규칙을 위반하면 오류 메시지가 표시되지 않습니다. 이것은 포스트 백이 전혀 일어나지 않는다고 믿게한다.

IE가 이런 식으로 행동하는 이유는 무엇입니까?

편집 : 코드는 (아니, 밀 꽤 실행을 보이는?) :

@model MyModel 
... 
@using (Html.BeginForm("SaveMyForm", "Home")) { 
<fieldset> 
    ... 
    <input type="submit" value="Save" class="submit" /> 
</fieldset> 
} 
+0

에 포함되어 있는지 확인? 폼 포스트? 또는 AJAX? 또한 FireBug 또는 Fiddler를 사용하여 전선을 가로 지르는 데이터의 유효성을 검사 할 수 있습니다 (자세한 내용) – hanzolo

+0

'유효성 검사'에서 중단 점을 설정하여 충돌이 발생했는지 여부를 확인할 수 있습니다 ... – gdoron

+0

그리고 IE 버전은 무엇입니까? –

답변

2

는 전에 주석해야했습니다 어떤 페이지 코드의 섹션을 주석 및보고에 의해 아래로 추적 양식이 효과가 있습니다.

대답은 초기화되지 않았으며 여전히 (char)0의 초기 값을 가진 char 유형의 숨겨진 필드였습니다. 소스가 생성 된 HTML이었다 :

<input data-val="true" data-val-required="The MyChar field is required." id="MyChar" name="MyChar" type="hidden" value="" /> 

나는 크롬에 비해, 거기 HTML 소스를 제외하고, 동일 :

분명히 "문자 제로"값의
value="�" 

. 분명히 IE는 char 0을 얻었을 때 그냥 공백으로 자르고 그 다음에 클라이언트 측 유효성 검사 규칙 인 MyChar에 값이 있어야합니다. 숨겨진 필드이므로 오류 메시지를 표시 할 위치가없는 포스트 백 오류가 발생합니다. 어쨌든!

(괄호로 참고 : 나는 어디서나 [Required] 속성이 필드를 장식하지 않은, 그래서 HTML은 "필요한"검증을 생성하는 이유를 전혀 몰라 - 그것은 숨겨진 필드의로 특히보고!)

+1

nullable 가능하지 않은 모든 속성은 기본적으로'data-val = "true"'가 렌더링 된 이유로 "필수"를 가져옵니다. – gdoron

0

하는 경우 @Html.HiddenFor에서 사용되는 모델의 사용자 정의 필드가 있지만 클래스에 정의되어 있지는 않지만 페이지를 렌더링하지만 제출/게시는 작동하지 않습니다.

@Html.HiddenFor(model => model.appUser.UserType) 

모든 모델 속성을 확인하고 모델 클래스가 정의되어 있는지 확인하십시오.

-1

당신이 당신의 페이지에 게시하는 방법을 스크립트가 바닥

@section Scripts { 
    @Scripts.Render("~/bundles/jqueryval") 
} 
관련 문제