2

DataAnnotations를 사용하여 유효성 검사 특성을 사용하여 내 뷰 모델을 장식하는 ASP.NET Core 웹 응용 프로그램을 개발 중입니다. 입력으로 세부 정보 페이지를 열면 Core가 HTML5 유효성 검사 속성을 렌더링 된 HTML에 추가 한 것을 볼 수 있습니다 (예 : data-val = "true"). 내가 필요로하는MVC 유효성 검사를 사용하지만 JSON 객체를 게시하는 경우 클라이언트에서 어떻게 유효성을 검사 할 수 있습니까?

window.Asset.Save = function() { 

    var postData = { 
     'Id': $("#Id").val(), 
     'SerialNumber': $("#SerialNumber").val(), 
     'PartNumber': $("#PartNumber").val(), 
     'assetTypeId': $("#AssetTypeId").val() 
    }; 

    $.post('/Asset/SaveAsset', postData); 
} 

:

$(document).on("click", "#SaveAsset", function (event) { 
     event.preventDefault(); 
     Asset.Save(); 
    }); 

나는 또한 다음과 같이 정의 된 저장 기능을 가지고 : 사용자가이 같은 저장 버튼을 클릭 할 때

그러나, 나는 사용자 정의 클라이언트 측 코드를 작성 $ .post를 호출하기 전에 먼저 클라이언트 측에서 유효성을 검사하지만 어떻게해야하는지 혼란 스럽습니다. Microsoft는 양식과 함께 사용할 때 눈에 잘 띄지 않는 JavaScript가 자동으로 작동 함을 보여줍니다. 하지만 내 양식을 제출하기 위해 HTML 양식 요소를 사용하지 않습니다. 그렇다면 HTML5 유효성 검사 속성을 어떻게 트리거 할 수 있습니까?

jquery.validate.js 및 jquery.validate.unobtrusive.js에 링크를 추가했습니다. 지금은 저장 버튼을 클릭하면 데이터가 서버로 전송되고 컨트롤러가 ModelState를 확인합니다. 하지만 서버에 아무 것도 보내지 않아야합니다. 클라이언트는 유효성 검사를 중지해야합니다.

이런 식으로해야할까요? 예를 들어 각 입력의 val()을 가져와 내 postData JSON 객체를 만듭니다.

양식 요소를 사용해야합니까? 내 페이지가 수백 개의 입력을 가지고 있기 때문에 사용을 중단 했으므로 문제가 발생할까봐 걱정했습니다. 이렇게하면 각 입력을 제어 할 수 있습니다.

+0

.NET 핵심은 전혀 검증이없는 사용자에게 오류 및 신발을 캡처합니다. ASP.NET 코어는 웹 스택입니다 ... – Tseng

+0

그리고 참으로, 양식을 사용해야합니다. 제출을 가로 채고 유효성 검사가 성공하면 javascript에서만 호출 할 수 있습니다. 그러나 100 개의 입력 필드가 있지만 4를 전달/검증하는 경우에는 대신 디자인을 재검토하거나 리팩토링해야합니다. – Tseng

답변

1

jQuery Validation Plugin과 같은 자바 스크립트 솔루션을 사용하여 서버에 보내기 전에 데이터의 유효성을 검사하십시오. 그렇지 않으면 데이터를 서버로 보내고 유효성 검사가 실패하면 잘못된 요청으로 오류를 반환합니다.

예 :

Return BadRequest(string[]{"Name is required", "Id must me a number"}); 

는 그냥 런타임이다,

관련 문제