我正在使用Javascript序列化程序将模型数据传递给控制器,但这并没有触发代码验证 这是代码
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/microsoftajax.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/MicrosoftMvcAjax.js")" type="text/javascript"></script>
<script type="text/javascript" language="javascript">
$(document).ready(function () {
$("#btnCreateDepartment").click(function () {
var name = $('#txtDeptName').val();
$.ajax({
data: { modelName: 'DEPARTMENT', values: Sys.Serialization.JavaScriptSerializer.serialize(
{
DeptName: name
}
)
},
url: '@Url.Action("Create", "Office")',
type: "POST",
complete: function (result) {
debugger
alert("complete");
},
error: function (result) {
debugger
alert(result.statusText);
}
}); //Endof ajax
return false;
}); //end of click
}); // end of ready
</script>
在模型中,我已添加验证如下
[Required(ErrorMessage = "Please Enter department")]
public string DeptName { get; set; }
但这并没有被解雇。
答案 0 :(得分:0)
通过ajax将对象传递给控制器将禁用默认的mvc验证表单。此验证仅在您执行普通帖子时才有效。 无论如何,如果你想使用ajax,你需要使用jquery进行验证。如果您决定不使用ajax,那么您可以使用mvc的内置验证。我还推荐用于MVC的流畅验证库
答案 1 :(得分:0)
将jQuery ajax的数据参数更改为
data: { DeptName: name },
因此它仅包含模型的属性。其他部门属性应该遵循DeptName ex。 { DeptName: name, DeptAddress: address, ... }
。
如果您的mvc模型在客户端镜像为javascript模型department
,那么您只需:
data: { JSON.stringify(department) },