9

ASP.Net MVC 3.0 では、Ajax.Beginform を使用しています。

フォームの成功時に JsonResult をヒットし、jQuery 関数を呼び出しています。しかし、何らかの理由でフォームが JsonAction にリダイレクトされています

私の見解


@using (Ajax.BeginForm("ActionName", "Controller", null, new AjaxOptions
           {
               HttpMethod = "POST",
               OnSuccess = "ShowResult"
           }, new { id = "myform" }))
{
    // All form Fields
    <input type="submit" value="Continue" class="button standard" />
}

私のコントローラー


public JsonResult ActionName(FormCollection collection)
{
    return Json(new { _status },JsonRequestBehavior.AllowGet);
}

jQuery


<script type="text/javascript">
function ShowResult(data) {
   // alert("I am at ShowResult");
    if (data.isRedirect) {
        window.location.href = json.redirectUrl;
    }
}

何らかの理由で、送信をクリックすると。JSonResult を実行し、ページを host/controller/actionname にリダイレクトします。

<script src="@Url.Content("jquery.unobtrusive-ajax.min.js")"></script>

私のlayout.cshtmlで

誰が何が間違っているのか教えてもらえますか?

問題が見つかりました。今、送信時に解決策を見つける必要があります。フォームを検証しています

$("#myform").validate({
    submitHandler: function (form) {
   // my logic goes here....
 }});

検証を除外すると、Ajaxフォームは期待どおりに機能します。しかし、フォームを検証すると、ajaxフォームが期待どおりに機能しません ありがとう

4

1 に答える 1

18

これが発生するのは、ほとんどの場合、スクリプト ファイルが読み込まれていないためです

からのメモ:

http://completedevelopment.blogspot.com/2011/02/unobstrusive-javascript-in-mvc-3-helps.html

  1. 上記のフラグを web.config に設定します。
    1. jQuery ライブラリへの参照を含めます ~/Scripts/jquery-1.4.4.js
    2. ~/Scripts/jquery.unobtrusive-ajax.js に、この魔法をフックするライブラリへの参照を含めます。

そのため、fiddler http://fiddler2.comをロードして、スクリプトが呼び出されてロードされているかどうかを確認します。

于 2011-11-25T20:49:40.937 に答える