ฉันมีแอคชั่น ASP.NET MVC ง่ายๆดังนี้:
public ActionResult Edit(EditPostViewModel data)
{
}
EditPostViewModel
มีแอตทริบิวต์การตรวจสอบเช่นนี้
[Display(Name = "...", Description = "...")]
[StringLength(100, MinimumLength = 3, ErrorMessage = "...")]
[Required()]
public string Title { get; set; }
ในมุมมองฉันกำลังใช้ตัวช่วยต่อไปนี้:
@Html.LabelFor(Model => Model.EditPostViewModel.Title, true)
@Html.TextBoxFor(Model => Model.EditPostViewModel.Title,
new { @class = "tb1", @Style = "width:400px;" })
หากฉันส่งแบบฟอร์มที่กล่องข้อความนี้อยู่ในการตรวจสอบความถูกต้องจะดำเนินการก่อนบนไคลเอนต์จากนั้นจึงใช้บริการ ( ModelState.IsValid
)
ตอนนี้ฉันมีคำถามสองสามข้อ:
ใช้กับ jQuery ajax submit แทนได้ไหม สิ่งที่ฉันกำลังทำคือเพียงแค่ลบแบบฟอร์มและเมื่อคลิกปุ่มส่งจาวาสคริปต์จะรวบรวมข้อมูลจากนั้นเรียกใช้ไฟล์
$.ajax
.ฝั่งเซิร์ฟเวอร์จะ
ModelState.IsValid
ทำงานหรือไม่ฉันจะส่งต่อปัญหาการตรวจสอบความถูกต้องกลับไปยังไคลเอนต์และนำเสนอเหมือนกับว่าฉันใช้การตรวจสอบความถูกต้องของ build int (
@Html.ValidationSummary(true)
) ได้อย่างไร
ตัวอย่างการโทร Ajax:
function SendPost(actionPath) {
$.ajax({
url: actionPath,
type: 'POST',
dataType: 'json',
data:
{
Text: $('#EditPostViewModel_Text').val(),
Title: $('#EditPostViewModel_Title').val()
},
success: function (data) {
alert('success');
},
error: function () {
alert('error');
}
});
}
แก้ไข 1:
รวมอยู่ในหน้า:
<script src="/Scripts/jquery-1.7.1.min.js"></script>
<script src="/Scripts/jquery.validate.min.js"></script>
<script src="/Scripts/jquery.validate.unobtrusive.min.js"></script>