我有一个具有必需属性的模型。是否可以在不是提交类型的按钮单击上进行数据验证。我确实引用了this article和this one,但它没有解决问题。
这是我的型号代码。
[Required]
[Display(Name = "Number of beds")]
public int Beds { get; set; }
[Required]
[Display(Name = "Number of Inpatient Beds")]
public int InpatientBeds { get; set; }
我的观点
@using (Html.BeginForm(new {id = "form1", @class = "form-horizontal" }))
{
<div class="divPanel">
<div class="row">
<div class="col-md-3">
@Html.LabelFor(m => m.Beds)
@Html.TextBoxFor(m => m.Beds, new { @class = "form-control", @type = "number"})
@Html.ValidationMessageFor(m => m.Beds)
</div>
<div class="col-md-3">
@Html.LabelFor(m => m.InpatientBeds)
@Html.TextBoxFor(m => m.InpatientBeds, new { @class = "form-control", @type = "number"})
@Html.ValidationMessageFor(m => m.InpatientBeds)
</div>
<div class="col-md-3">
<button type=button class="btn btn-primary" id="btnCalculateScore" > Calculate Score</button>
</div>
</div>
<div class="col-md-3">
<button type="submit" class="btn btn-primary" id="btnSaveChanges" data-toggle="modal"><i class="fa fa-share-square-o"></i> Update Status</button>
</div>
</div>
}
我的剧本
$('#btnCalculateScore').on('click', function (evt) {
evt.preventDefault();
if ($('#form1').valid()) {
//Do Something.
}
}
验证不起作用,即使字段为空,控件也会进入if循环?有什么我想念的吗?此方法是否也会提供通常在提交按钮事件中发生的验证消息?
编辑:
我添加了一个类型为“提交”的正常“更新状态”按钮,验证工作正常。
我在表单中添加了id,以确保View包含其他表单无关紧要。
答案 0 :(得分:1)
我有同样的问题,这似乎为我解决了。
@using (Html.BeginForm(new {id = "form1", @class = "form-horizontal" }))
在查看页面源代码时,此代码不会将id Form1附加到您的表单。因此,您的验证不会发生,因为找不到具有id form1的表单。
相反,假设您的操作是一个帖子而您正在保存数据,请参阅操作方法保存和控制器床,您可以将表单编辑为
@using (Html.BeginForm("Save", "Bed", FormMethod.Post, new { id = "form1",@class = "form-horizontal"}))
这会将id参数附加到您的表单(您可以使用ViewPageSource进行检查),它应该可以正常工作。可能有一个更好的解决方案,但这对我来说没有问题。