2

カミソリ ビュー エンジンに ajax フォームがあります。検証には、データ注釈クラスを使用します。ユーザーがフォームを送信すると、検証は正常に機能し、検証メッセージは正常に機能します。問題は、キーアップまたはぼかしイベントで検証が機能しないことです。

ajaxform(ajax.beginform)で送信せずに検証を有効にするにはどうすればよいですか

ここに私のビューコードがあります:

@using (Ajax.BeginForm(new AjaxOptions { InsertionMode = InsertionMode.Replace,       
        UpdateTargetId = "employeeDetail", HttpMethod = "Post", OnComplete = "Complete", 
        Confirm = "Confirm?" }))
{
    @Html.TextBoxFor(model => model.Email)
    @Html.ValidationMessageFor(model=>model.Email)
    <span style="float:right"><input type="submit" class="tableGenelButton" id="submitButton" value="Kaydet" /></span>
}

モデル:

  [RequiredWithMessage]
  [Display(Name = "E-Mail")]
  public string Email { get; set; }
4

2 に答える 2

3

更新

わかりました。どうやらAjax.BeginForm、jQueryの代わりにMicrosoftAjaxを使用しているようです(以前は気づいていませんでした)。これは、クライアント側の検証を有効にするためにいくつかの追加作業が必要です。

あなたが必要です

<% Html.EnableClientValidation(); %> 

あなたのページのどこかに、そしてまたへのリンクMicrosoftAjax.jsMicrosoftMvcAjax.jsそしてMicrosoftMvcValidation.js

これがあなたにとって興味深いかもしれないリンクです:

Ajax.BeginFormを使用したASP.NETMVCクライアント側の検証


カスタム検証属性のクライアント側検証を有効にするには(おそらく[RequiredWithMessage]その1つです)、IClientValidatableインターフェイスを実装する必要があります。

これを行う方法を説明する記事は次のとおりです。

ASP.NETMVC3-パート2での検証の完全ガイド

于 2011-05-09T16:20:36.957 に答える
0

クライアント側の検証が有効になっていると仮定すると、関連するイベントで.validate()を呼び出す必要があります。

$("#theFormToValidate input").blur(function(){
    $("#theFormToValidate").validate();
});

$("#theFormToValidate input").keyup(function(){
    $("#theFormToValidate").validate();
});
于 2011-05-09T15:49:53.827 に答える