私はこのようなモデルを持っています(簡略化)
public class User
{
[Required]
public string UserName { get; set; }
// Other fields
}
viewModel
次のようなノックアウト付きの MVC カミソリ ビュー:
@using (Html.BeginForm("MyAction", FormMethod.Post, new { id = "profileEditorForm" }))
{
@Html.ValidationSummary(false)
@Html.LabelFor(n => n.UserName)
@Html.TextBoxFor(n => n.UserName, new { data_bind = "value: UserName" })
@Html.ValidationMessageFor(n => n.UserName)
@* Other fields *@
<p>
<input type="submit" value="Save" alt="" title="" />
<a href="/">Cancel</a>
</p>
}
<script type="text/javascript">
$(function() {
var vm = new viewModel(@(Html.Raw(Json.Encode(@Model))));
ko.applyBindings(vm);
$("#profileEditorForm").validate({
submitHandler: function(form) {
alert('Validating ' + ko.toJSON(vm));
if (vm.save)
window.location.href = "/";
return false;
}
});
});
var viewModel = function(model) {
var self = this;
self.UserName = ko.observable(model.UserName);
// Other fields
self.save = function() {
alert('Saving ' + ko.toJSON(self));
}
};
};
</script>
検証機能を通過しても(アラートの挿入がそれを示しています)、クライアント側の検証を提供してから、保存してMVCアクションに無効なものをポストバックすることはできません。
このフォームでクライアント側の検証 (web.confir で有効になっています) を有効にする方法を教えてください。その日を台無しにするのはノックアウトですか(すべてのバインディングは完全に正常に機能していますが?それとも、私が見ているだけで見えないものですか?
大変助かります!