2009-03-26 19 views
0

このAjaxリクエストが正しく起動されない理由はわかりません。簡単にするために、私はthis tutorialを使ってAjaxリクエストを実装しようとしています。しかし、私はコントローラーにその要求がそうであると認識させることはできません。私はAjax.ActionLinkを更新するdiv内に配置しようとしました(ここではその外にあります)。asp.net MVC Ajaxリクエストが正しく起動しない

Response.Writeを使用してDatetimeを配置すると、Div内のものが更新され、ターゲットdiv外のものは期待通りに更新されません。私はあまりにもMS Ajaxライブラリーの仕組みに精通しているわけではありませんが、表面上はページの右側のセクションを更新しているようですが、コントローラーは要求タイプを認識せず、誤った情報を出力します。

... 
    <script src="../../Scripts/MicrosoftAjax.js" type="text/javascript"></script> 
    <script src="../../Scripts/MicrosoftMvcAjax.js" type="text/javascript"></script> 
    <script src="../../Scripts/jquery-1.2.6.min.js" type="text/javascript"></script> 

</asp:Content> 
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 
    <div class="chart" id="divChart"> 
     <% Html.RenderPartial("GraphView", Model); %> 
     <br /> 
     <% Response.Write(DateTime.Now); %> 
     <br /> 
    </div> 
    <%= Ajax.ActionLink("no parameters", "MyWorkouts", new AjaxOptions{ UpdateTargetId = "divChart"}) %> 
    <%= Ajax.ActionLink("id parameter", "MyWorkouts", new {chtype=1},new AjaxOptions { UpdateTargetId = "divChart", OnBegin = "beginContactList", OnSuccess = "successContactList", OnFailure = "failureContactList" })%> 
    <%= Ajax.ActionLink("all parameters", "MyWorkouts", new {chtype=2, range=ViewData["daterangevalue"]},new AjaxOptions { UpdateTargetId = "divChart", OnBegin = "beginContactList", OnSuccess = "successContactList", OnFailure = "failureContactList" })%> 
    <br /> 
    <% Response.Write(DateTime.Now); %> 
    <h2> 
... 

そして、私のActionResultがそうのように見える...

[AcceptVerbs(HttpVerbs.Get)] 
     public ActionResult MyWorkouts(int? chtype, int? range) { 
      int dateRange = 3; 

      // do some stuff here - left out for readability 

      if (Request.IsAjaxRequest()) { 
       if (range != null) { 
        dateRange = (int)range; 
       } 

      } 

      //do some other stuff... 

      if (Request.IsAjaxRequest()) { 
       return PartialView("GraphView", workouts); 
      } else { 
       return View(workouts); 
      } 
     } 

(これは私はそれが考え出したら、それを実装するだけのテストページですとしてすべてはかなりデフォルトです)。その結果、私は目標とされたdivの内部を完全に見ることができます。

答えて

0

古いバージョンのMVCフレームワークを使用しているようですね。

リリースバージョンに更新し、最新のjqueryとmvcスクリプトを使用していることを確認することをお勧めします。問題に関連する可能性のあるRequest.IsAjaxRequest()メソッドの具体的な変更点。

また、そこにRedirectToActionコールが含まれている場合は、similar problem hereについて読むことができます。

+0

私は自分の開発マシンにRC1をインストールしていると思います(私はRC2にアップデートしていません)。また、RedirectToActionやリダイレクトタイプの動作は、省略されたコードではまったく発生せず、ちょうどいくつかのサービスレイヤ呼び出しがあります。 – MunkiPhD

0

問題点はわかりませんが、FiddlerとRouteDebuggerがデバッグに役立つかもしれません。

+0

正しいコントローラに行くので、ルートの問題ではないと思います。リクエストをAjaxリクエストとして認識しないだけです。私はFiddlerを試してみる必要がありますが、Firebugを使っていて何も見つけられませんでした。 – MunkiPhD

0

あなたが投稿したスニペットには表示されませんが、フォーム/フォームタグを持つ可能性は非常に高いです。これらはフォームタグを生成するAjax.BeginFormにも干渉しています。外部フォームタグを削除すると、Request.IsAjaxRequestはtrueを返します。

関連する問題