2011-11-25 8 views
9

ASP.Net MVC 3.0で、私はAjax.BeginformASP.Net MVC 3.0 Ajax.BeginFormがページにリダイレクトされていますか?

を使用していると私はjQueryの関数を呼び出していますフォームの成功にするJsonResult を打ちます。 が、何らかの理由で、私のフォームは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を実行し、私は私のlayout.cshtmlに

を私

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

が含まれている/コントローラ/ actionNameの をホストするためにページをリダイレクトしますか

問題が見つかりました。今、私は予想通りAjaxフォームの動作検証を除外した場合、私は私のフォーム

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

を検証しています を提出する上で解決策 を見つける必要があります。 しかし、私は自分のフォームを検証する場合に予想されるとして、スクリプトファイルはから

ノートをロードされていないので、これはそのほとんど常に発生したときに、AJAXフォームは おかげ

+0

JavaScriptコールバックが呼び出されていますか?あなたは、あなたのJSonオブジェクトがブラウザに正しく返されることを、フィドラーで確認しましたか? * JsonAction *にリダイレクトするとどういう意味ですか? – Jan

+0

私のJavaスクリプトは同じページにあります。別のページにリダイレクトしているためです。 JavaScriptは呼び出すことができます。はい、私のJsonオブジェクトは期待通りに返されます。私は新しいリダイレクトされたページのjson結果を参照してください – HaBo

答えて

18

が動作していない:

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

  1. web.configに前述のフラグを設定します。
    1. リフェラルを含めますjQueryライブラリ〜/スクリプト/ jqueryの - 1.4.4.js
    2. にNCEは〜/スクリプトでこの魔法をフックライブラリへの参照/ jquery.unobtrusive-ajax.js

を含めますしたがって、フィドラーhttp://fiddler2.comをロードして、スクリプトが呼び出されて読み込まれているかどうかを確認してください。

+0

私はすべてのスクリプトが正しく指している問題を参照してください。問題は、私はフォームにhtmlのidタグを与える場合、これは動作していないidタグです。私はIDを取る場合、Ajaxフォームは期待どおりに動作します。しかし、私はそれを検証しているので、私はAjaxフォームのIDタグが必要です。 – HaBo