我已经实现了一个mvc应用程序。我使用了数据注释进行验证。 我的班级是
public class AdviceCreateVM
{
[Key]
public int Id { get; set; }
[Required(ErrorMessage = "Company is required")]
public int CompanyId { get; set; }
}
我的观点是
@using (Html.BeginForm("Create", "AdviceCreate", FormMethod.Post, new { enctype = "multipart/form-data", id = "frmCreate"}))
{
@Html.ValidationSummary(true)
<div class="row-fluid">
<div class="span9 roundedDiv" style="margin-left: 10px;">
<div class=" row-fluid Span12" style="margin-bottom: 15px">
<div class="span6">
<div class="span4">
<label>Company</label>
</div>
<div class="span6">
@Html.DropDownListFor(model => model.CompanyId, Model.Companies.Select(company => new SelectListItem { Value = company.Id.ToString(), Text = company.Name }), "--Select Company--")
@Html.ValidationMessageFor(model => model.CompanyId)
</div>
</div>
<input class="btn btn-primary" type="button" value="Create" id="create" />
}
我使用了按钮而没有提交动作,并使用ajax将数据从视图发布到控制器。 jquery代码是,
var obj =$("#frmCreate").serializeArray();
$.ajax({
url: '@Url.Action("Create", "AdviceCreate")',
type: 'POST',
data:obj,
success: function (data) {
window.location.href='@Url.Action("index")';
}
});
我的问题是,当&#34; companyId&#34;为null,如果我单击“创建”按钮,它应显示来自数据注释的消息。但是不显示消息剂量。 任何解决方案?
答案 0 :(得分:0)
您需要将jquery / javascript事件连接到按钮单击并在窗体上调用validate()方法。
$("#buttonSubmit").click(function(){
if($("form").validate())
{
//Post to server or other stuff, if the validation successful
}
});
这是一个伪代码,提供一个想法。
答案 1 :(得分:0)
代码看起来很熟悉。在您手动提交表单时,请致电
$("#frmCreate").validate();
if($("#frmCreate").valid())
{
var obj =$("#frmCreate").serializeArray();
$.ajax({
url: '@Url.Action("Create", "AdviceCreate")',
type: 'POST',
data:obj,
success: function (data) {
window.location.href='@Url.Action("index")';
}
});
}