2012-03-01 6 views
2

コントローラのアクションを正常に呼び出すAjax.ActionLinkがありますが、戻り値でターゲットを更新する代わりに、新しいページに移動して戻り値を表示します。Ajax.ActionLinkがナビゲートする

私は私の見解で

<script src="../../Scripts/jquery.unobtrusive-ajax.min.js" type="text/javascript"></script> 

を控えめAjaxのスクリプトを持っており、これらのスクリプトは、ここに私のレイアウトページに

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script> 
    <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js" type="text/javascript"></script> 
    <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> 
    <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script> 

ですが、私のアクションリンクです:

<span id = "status">Account is Active</span> 
@Ajax.ActionLink("Deactivate", 
       "Deactivate", 
       "Lender", 
       new {id = Model.ID}, 
       new AjaxOptions { 
           HttpMethod = "GET", 
           Confirm = "Confirm Deactivation", 
           UpdateTargetId = "status" 
           }) 

私のコントローラアクション:

public string Deactivate(int id) { 
    var status = "Account is Active"; 
    ... // call method to deactivate account 
    ... // set status = "Account is Inactive" 
    return status; 
} 

戻り値が正しく設定されています。だから、なぜAjaxがやろうとしていることをするのではなく、ページが離れていくのですか?

+1

['MicrosoftMvcAjax.js'](http://www.asp.net/ajaxlibrary/cdn.ashx#ASPNET_MVC_Releases_on_the_CDN_10)はどこですか? –

+1

jQueryを使用しているときにMicrosoftファイルが不要になった –

+0

@BradChristie MicrosoftMVCAjaxファイルも含まれていることを確認するだけで、作業がsgtarted ...私はファイルが不要になり、jqueryを使用していると言う理由が混乱しています代わりに機能を削除して機能が失われた場合TekPub MVCのトレーニングではPhil HaacksのMVC 3プロの書籍と同じように削除することをお勧めします... –

答えて

4

はあなたのページへjquery.unobtrusive-ajax.min.jsライブラリを含める必要があります。そして、このようなない

<script src="../../Scripts/jquery.unobtrusive-ajax.min.js" type="text/javascript"></script> 

は、ASP.NET MVCアプリケーション内のURLをハードコードしないでください。常にURLヘルパーを使用してください。

<appSettings> 
    <add key="webpages:Version" value="1.0.0.0"/> 
    <add key="ClientValidationEnabled" value="true"/> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true"/> 
</appSettings> 

あなたがMicrosoft*.jsスクリプトの絶対に痕跡をすべて削除したことを確認してください:

も邪魔にならないアヤックスがあなたのweb.configファイルで有効になっていることを確認してください。それらは完全に時代遅れであり、まったく使用すべきではありません。

+0

質問に示されているように、そこには –

+0

@CDSmith、いいえ、そこにはありません。あなたはそれを正しく含めていません。パスをハードコーディングしました。あなたは、URLヘルパーを使用する必要があります。もっと慎重に私の答えを見てください。また、すべての 'Microsoft * .js'スクリプトをあなたのページから削除し、web.configに目立たないAJAXを有効にしていることを確認してください。 –

+0

それはハードコードされているかもしれませんが、そこにあり、ブラウザでうまく戻ってきました、ちょうどニックピッキーです。前に述べたように、Microsoft *のファイルは今や不必要であり、好ましい方法はjqueryであると考えていました。だから私はハードコードされたスクリプトを削除し、URLヘルパーを使用して、私はすべてのMSファイルを削除し、あなたが述べたようにweb.configを設定します。これは私の作業中のMSファイルの解決策が動作を停止させる原因となりました。だから、あなたが答えている間、すべての "正しい"ことをしている、それは動作しません。 –

0

MicrosoftMvcAjax.jsにあなたのスクリプトのリストを含めてください。

これはもはや必要ではありませんが、私は完全にはわかりませんが、AjaxHelper拡張メソッドを使用すると、そのファイルがすべての機能を果たさないようです-ボックス。

MSのCDNはMVC 4用のMicrosoftMvcAjax.jsファイルを表示しないことに気付きました。純粋なjQueryを使用して切り替えられたバージョンかもしれませんが、完全にはわかりません。私は正しい方法で私の答えでそれを含めどのよう

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script> 

お知らせ:

+1

-1。 'MicrosoftAjax *。js'はASP.NET MVC 3から完全に廃止されました。 –

+0

@ダーリン:元の質問に対するコメントでない場合は、私も答えを投稿しませんでした。しかし、あなたは今質問に興味があり、それを説明することができてうれしいです。 –

関連する問題