我的问题是,当我通过 ajax 调用加载 div 的内容时,客户端模型验证不起作用。
我从 ajax 调用返回的部分视图是一个包含 MemberInfo 字段并使用 MemberModel 的视图。
<div id="wizard">
@using (Html.BeginForm(null, null, FormMethod.Post, new { id = "wizard-form"}))
{
<div data-bind="with: memberModel()">
//content replaced thru ajax call
<div id="wizard-content">
</div>
</div>
}
</div>
还使用 javascript 模型对我的部分视图上的文本绑定使用敲除。
var memberModel= ko.observable(@Html.Raw(Json.Encode(Model))),
我将 MemberModel 发布到从 ajax 调用的控制器方法中,该方法返回 MemberInfo 部分视图:
var data = ko.toJSON(memberModel());
$.ajax({
url: url,
type: "POST",
data: data,
contentType: "application/json",
traditional: true,
success: function (data) {
if (data != "" && data != null) {
$("#wizard-content").html(data);
ko.applyBindings(memberModel, document.getElementById("wizard"));
}
}
});
MemberModel 就像:
public class MemberModel
{
public int MemberID { get; set; }
[Required]
[MaxLength(20)]
public string MemberName { get; set; }
[DisplayName("First Name")]
[RegularExpression(@"^[a-zA-Z\s.,'-]{2,50}$"]
[Required]
public string FirstName { get; set; }
[DisplayName("Last Name")]
[RegularExpression(@"^[a-zA-Z\s.,'-]{2,50}$"]
[Required]
public string LastName { get; set; }
}
加载部分视图的内容后,我的淘汰赛绑定工作正常。但是表单的模型验证不适用于呈现的视图。