在我的asp.net mvc app中的模型中,我使用了RequiredIf属性。
模型
[RequiredIf("CustomerType== 'B'", ErrorMessage = "Please enter customer name")]
[Display(Name = "Customer Name")]
[DataMember(Name = "CustomerName")]
public String CustomerName{ get; set; }
[Required(ErrorMessage = "Please select customer type")]
[Display(Name = "Customer Type")]
[DataMember(Name = "CustomerType")]
public String CustomerType { get; set; }
查看
@using (Html.BeginForm(null,null,FormMethod.Post,new { @class ="transactionForm" })){
<td>@Html.LabelFor(model => model.CustomerName, htmlAttributes: new { @class = "control-label col-md-2" })</td>
<td>@(Html.Kendo().TextBox()
.Name("MusteriAd")
.HtmlAttributes(new { style = "width: 250px; height: 32px;" }))
@Html.ValidationMessageFor(model => model.CustomerName, "", new { @class = "text-danger" })
</td>
我通过ajax帖子将表单发送到服务器,这是我的功能;
function SaveRecord(action, controller, param) {
$('.error').remove();
var form = $(".transactionForm");
var validator = form.kendoValidator().data("kendoValidator");
if (validator.validate()) {
var data = form.serialize();
$.ajax({
url: '/' + controller + '/' + action,
dataType: 'json',
type: 'POST',
data: data,
success: function (response) {
if (response !== null && !response.success) {
DisplayErrors(response.error);
}
else {
}
},
error: function (xhr, ajaxOptions, thrownError) {
}
});
}
}
使用这种结构,我可以完美地处理服务器端验证,但是在客户端 - validator.validate()
部分,它只验证具有必需属性的输入。
我应该为客户端验证这些requiredif输入编写额外的代码,还是有其他方法可以在razor侧或js端处理这个问题?
答案 0 :(得分:0)
我认为将此留给kendo-ui无法解决这个问题。因为, kendo为客户类型输入生成html;
<input data-val="true" data-val-required="Please enter customer name" id="CustomerType" name="CustomerType" style="width: 250px; display: none;" type="text" data-role="dropdownlist" class="k-valid">
和客户名称
<input class="k-textbox k-valid" id="CustomerName" name="CustomerName" style="width: 250px; height: 32px;">
data-val-required
不会为剑道的 requiredIf 归因成员生成。
所以,我只在服务器端检查这些字段。