私はこのような単純なASP.NETMVCアクションを持っています:
public ActionResult Edit(EditPostViewModel data)
{
}
次のEditPostViewModel
ような検証属性があります。
[Display(Name = "...", Description = "...")]
[StringLength(100, MinimumLength = 3, ErrorMessage = "...")]
[Required()]
public string Title { get; set; }
ビューでは、次のヘルパーを使用しています。
@Html.LabelFor(Model => Model.EditPostViewModel.Title, true)
@Html.TextBoxFor(Model => Model.EditPostViewModel.Title,
new { @class = "tb1", @Style = "width:400px;" })
このテキストボックスが検証に配置されているフォームで送信を行うと、最初にクライアントで実行され、次にservice(ModelState.IsValid
)で実行されます。
今、私はいくつかの質問を受けました:
代わりに、これをjQuery ajax submitで使用できますか?私がしているのは、フォームを削除し、送信ボタンをクリックすると、JavaScriptがデータを収集してからを実行すること
$.ajax
です。サーバー側は
ModelState.IsValid
機能しますか?検証の問題をクライアントに転送して、build int validate(
@Html.ValidationSummary(true)
)を使用しているかのように提示するにはどうすればよいですか?
Ajax呼び出しの例:
function SendPost(actionPath) {
$.ajax({
url: actionPath,
type: 'POST',
dataType: 'json',
data:
{
Text: $('#EditPostViewModel_Text').val(),
Title: $('#EditPostViewModel_Title').val()
},
success: function (data) {
alert('success');
},
error: function () {
alert('error');
}
});
}
編集1:
ページに含まれています:
<script src="/Scripts/jquery-1.7.1.min.js"></script>
<script src="/Scripts/jquery.validate.min.js"></script>
<script src="/Scripts/jquery.validate.unobtrusive.min.js"></script>