0

Create a Wizard in ASP.NET MVC 3에 설명 된 기술을 사용하여 MVC에서 마법사를 구현하려고합니다. (. 내가 MVC의 최신 버전을 사용하고 있습니다)

하지만 다음 코드 줄에 문제가있을 것 같다 : $("form").validate이 정의되어 있기 때문에

var validator = $("form").validate(); // obtain validator 

이 줄은 오류가 발생합니다.

불행히도이 특정 코드가 어떻게 작동하는지 알지 못하기 때문에이를 수정하는 방법을 모르겠습니다. 누군가 여기서 일어나는 일을 설명 할 수 있습니까? validate은 어디에 정의되어 있습니까?

+1

jQuery 유효성 검사 플러그인에 정의되어 있다고 가정합니다. 아마 어딘가에 포함되었을 것입니다. – adeneo

+0

나는 그것에 대해 궁금해했다. 그러나 내 레이아웃 파일에는 @ Scripts.Render ("~/Content/css") @ Scripts.Render ("~/bundles/jquery") @ Scripts.Render ("~/bundles/jqueryval") @Scripts가 포함되어 있습니다. 렌더링 ("~/bundles/modernizr")'. –

+0

console.log ($ ("form"))를 사용하면 폼이 실제로 DOM에 있는지 확인할 수 있고 jquery 객체의 프로토 타입 ('__proto__')에서 메서드로 validate를 찾을 수 있는지 확인할 수 있습니다. – Trace

답변

3

실제로 기본적으로 _Layout.cshtml 파일에는 페이지 끝 (닫는 본문 태그 바로 앞)에 스크립트 파일이 포함되어 있으며 브라우저에서 렌더링 된 페이지를 보면 알 수 있습니다.

일반보기의 내용은 레이아웃 파일에서 @RenderBody 호출이있는 곳에서 임베드됩니다. RenderBody에 대한 호출은 포함 된 스크립트 앞에옵니다. 그래서 외부 코드를 참조하는 자바 스크립트 코드는 작동하지 않습니다.

"스크립트"섹션은 포함 된 스크립트 이후에도 레이아웃 파일에 정의됩니다. 따라서 @section "Scripts"를 사용하면 거기에 넣은 임의의 코드가 포함 된 js 파일 뒤에 오는 것이므로 작동 할 것입니다.

이제 더 좋을 것입니다.

+0

예, 이것이 문제입니다. 나는 지난 밤에 약간의 연구와 머리 긁기 후에 그것을 실제로 발견했다. (BTW, 답변에서 내 이름 @ 조나단 우드를 언급 할 필요는 없습니다.) 감사. –

+0

나는 그것이 너무 길어서 대답으로 변환된다는 것을 깨닫기 전에 코멘트를 쓰기 시작했다. 고쳤다. 감사. –

2

html 파일에 jquery validate를 스크립트로 포함하지 않은 것 같습니다.

<script src="http://cdn.jsdelivr.net/jquery.validation/1.13.1/jquery.validate.min.js"></script> 

을 아니면 로컬을 포함한다 : 당신은 어떻게 했습니까?

+0

필자는 그 라인이 정확하지 않지만, 레이아웃 상단에'@ Scripts.Render ("~/bundles/jquery")'와'@ Scripts.Render ("~/bundles/jqueryval")' 파일. –

+0

jqueryval에 대한 경로가 잘못되었을 수 있습니다. 두 번 확인할 수 있습니까? –

+0

내 렌더링 된 마크 업에는''이 포함되어 있습니다. 브라우저에서 링크를 클릭하면 스크립트 파일이 예상대로 나타납니다. –