3

次のデータモデルがあります

public class User
{
        [Required(ErrorMessage = "First name required!")]
        public string FirstName { get; set; }

        [Required(ErrorMessage = "Last name required!")]
        public string LastName { get; set; }
}

上記のモデルを使用する「UserForm」という次のビューがあります

@model User
@using (Html.BeginForm("myAction", "MyController"))
{
@Html.TextBoxFor(model => model.FirstName)
@Html.TextBoxFor(model => model.LastName)
@Html.ValidationSummary()
<input type="submit" value="Save" />
}

上記のコードをテストしたところ、目立たない検証とフォームの投稿は問題なく正しく機能します。ただし、以下に示すように、上記のビューを 2 番目のビューに部分ビューとして含めると、クライアント側の目立たない検証が機能しなくなります。

<div id="myPartialView">
<!-- Include form as partial view -->
@{Html.RenderAction("myAction", "MyController");}
</div>

次のJavaScript行を使用して、目立たない検証を明示的にリロードしようとしました

jQuery.validator.unobtrusive.parse('#myPartialView');

現在、検証は機能していますが、フォームを送信できません。私はフィドラーを使用しましたが、送信ボタンをクリックしてもアクティビティがトリガーされないことがわかります。私が間違っているかもしれないことについて何か考えはありますか?

4

1 に答える 1

2

この質問に出くわした人のために、私はこの問題を解決しました。フォームが Jquery Modal ボックスに埋め込まれていて、無効な html タグがありました。これにより、モーダルが機能しなくなりましたが、フォームの送信が停止していました。(理由はまだわかりません)。w3c の優れた html バリデーターを使用して、このエラーを見つけました。

http://validator.w3.org

私はまだ必要であることに注意すべきです

jQuery.validator.unobtrusive.parse('#myPartialView');

クライアント側の検証を動的コンテンツで機能させるため。これはよく知られている問題で、上記の @Mate が投稿したリンクで詳しく説明されています

于 2012-12-08T18:20:14.227 に答える