2011-12-01 4 views
1

別のページから同じアクションを呼び出すにはどうすればよいですか?ASP .NET MVC3 ajaxはさまざまなページから同じ関数を呼び出す

type: 'POST', 
    url: 'Notification/GetRecentNotifications/' 

私は現在、私の行動を呼び出すために上記のコードを使用しています。私のアプリケーションのホームページでも動作しますが、他のページに変更しても動作しません。誰も私に解決策を教えてもらえますか?前にありがとう。

+0

分析のためにコードサンプルを入れてください。 –

答えて

3

私は通常

$.ajax({ 
      type: "POST", 
      url: '@(Url.Action("Action", "Controller"))', 
      success: function (data) { 

      } 
     }); 

使用 Url.Action()ajax.jsファイル内のコードを入れてリンク

+0

スクリプトの中でそのようなasp関数を呼び出すと、javascriptコードを分離することは可能ですか? – haper

0

を構築するためにどのコントローラAjaxのjQueryの呼び出し内でコールする&アクション...指すように行う相続人は何スクリプトディレクトリは、そのファイル内のメソッドを使用する必要があるページでそのスクリプトディレクトリを参照します。その後、例えばAjaxControllerであなたのAJAX呼び出しのための任意のサーバー側のロジックを置く:_ajaxService上記の例では

ajax.js

function foo() { 
    var model = { }; 

    $.ajax({ 
     url: '@Url.Action("Foo", "Ajax")', 
     type: "POST", 
     data: JSON.stringify(model), 
     success: function(data) { 
      alert(data); 
     }, 
     error: function(data) { 
      alert(data); 
     } 
    });  
} 

AjaxController.cs

public class AjaxController : Controller 
{ 
    [HttpPost] 
    public JsonResult Foo(FooModel model) 
    { 
     string message = _ajaxService.Foo(model); 

     return Json(message); 
    } 
} 

すると、サービス層であり、あなたのajaxリクエストを処理するためのロジックを含むオブジェクト。以下は、あなたのビューで関数を使用する方法である:

SomeView.cshtml

<script type="text/javascript" language="javascript" src="@Url.Content("~/Content/Scripts/ajax.js")"></script> 
<script type="text/javascript" language="javascript"> 
    $(document).ready(function() { 
     $('#button').click(foo); 
    }); 
</script> 

再利用されたAjaxのメソッドにデータを渡すための追加のロジックがある場合は、おそらく部分図にそれを置く必要がありますそれを必要とするすべてのビューから参照してください。

関連する問題