이 포스팅은 기본 JQuery와 아약스와 마이크로 소프트 MVC 도우미를 혼합에 관한 것입니다. 난 길을 따라 발생하는 주요 문제가 있었다 :
- 더블 포스트 제출
- @ Html.ValidationMessageFor
는
요구 사항
나는이 속성 출력하지 양식 유효성 확인 및 게시 요구 사항 (id = "my-form")
양식이 검증으로 장식 된 모델에 바인딩 내가 눈에 거슬리지 편익 내가 클라이언트 측 및 서버 측 유효성 검사 (모두 필요
을 활용하는 등 @ Html.ValidationMessageFor 같은 헬퍼 메소드의 사용을 만들고 싶어 그래서 속성 서버 측 데이터베이스와 고유 한 이름 확인)
추가 양식 데이터를 추가하기 위해 양식을 제출할 때 일부 클라이언트 측 처리를 수행해야합니다.
반복 단계
내가 더 네이티브 JQuery와 진형과 아약스 양식을 작성하기 위해 마이크로 소프트 도우미를 사용하여 1
단계 :
@using (Ajax.BeginForm(...
모든 가공 한을 광고 한 것과 같이. 이것은 나를 눈에 띄지 않는 유효성 검사로했지만 사용자 정의 양식 데이터 요구 사항을 충족시키지 못했습니다.
그래서 제출 프로세스를 재정의한다고 생각했습니다.
STEP 내가 새로운 이벤트 핸들러 후크 준비가 내 문서에서 2
:
function SubmitForm(e)
{
// Suppress normal event behaviour
e.preventDefault();
// Validate the form
var valid = $("#my-form").validate();
if (valid.errorList.length > 0)
return;
// Collect up form data manually
var formData = ...(code removed for clarity)
// Display animated gif
$("#ajax-loader").css("display", "inline")
// Post Form
$.post(
'@Url.Action("MyAction", "MyController")', // url
formData, // data
SuccessFunction // success
)
.error(ErrorFunction); // error
}
:
$(document).ready(function()
{
// Rebind validators
$.validator.unobtrusive.parse('#my-form');
// Hook up submit event
$("#my-form").submit(SubmitForm);
});
그리고 내에서
내가 내 자신의 폼 데이터 처리를 할 수있는 기능을 제출을이제 장면이 설정되었습니다.
문제
하나의 문제는 아약스의 두 가지 유형을 혼합하고있어 것입니다. 이것은 두 번 게시물로 연결됩니다. 바이올린을 사용하면 게시물이 두 번 표시됩니다. (마이크로 소프트 양식 선언과 jquery 게시판에 대해 한 번) 2 개의 처리기가 연결 되었기 때문입니다. 인터넷 검색을 조금만하면 일부 사람들이 jquery를 사용하여 하나의 핸들러를 제거하지만 모두 조금 어수선 해 보입니다.
이제
<form id = "my-form">
...
</form>
문제점 @ STEP 3
그래서 간단한 폼 태그에 @using (Ajax.BeginForm (... 구문 변경 Html.ValidationMessageFor는 그 일을하지 않습니다. 방화 광을 사용하여 양식 입력에 더 이상 유효성 검사 특성이 적용되지 않습니다.
@ Html.ValidationMessageFor는 양식 도우미와 함께 작동하는 것처럼 보입니다.
내가 두 번 제출을 얻을 수 있기 때문에 내가 ... Ajax.BeginForm을 (사용할 수 없습니다
4 단계
그래서 내가 다음에 사용:.
@using (Html.BeginForm("MyAction", "MyController", FormMethod.Post, new { id = "my-form" }))
{....
내가 사용을 Html.BeginForm은 순전히 My @ Html.ValidationMessageFor를 만들기 위해 사용합니다. 사용자 지정 이벤트 처리기가 양식 제출 프로세스를 대신하기 때문에 "MyAction"및 "MyController"매개 변수가 모두 중복됩니다.
해결
이제 모든
- 없음을 두 번 제출을 작동하지 않을 것
- 겸손한 유효성 검사를 사용하여 @ Html.ValidationMessageFor
- 사용자 정의 폼 처리/제출
- 클라이언트 및 서버 측 유효성 검사
내 질문.
이 방법이 맞습니까? 나는이 라인을 따라 누구든지 elses 경험을 듣고 싶습니다.
감사
필