2011-12-01 87 views
1

如何從不同的頁面調用使用ajax的相同動作?ASP .NET MVC3 ajax從各種頁面調用相同的功能

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

我正在使用上面的代碼來調用我的操作。它適用於我的應用程序的主頁,但是當我更改爲其他頁面時,這不起作用。任何人都可以給我一個解決方案嗎?以前感謝。

+0

請將代碼示例進行分析。 –

回答

3

繼承人我通常指向

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

      } 
     }); 

使用Url.Action()建立聯繫

+0

當我在腳本中調用類似asp的函數時,是否可以分離javascript代碼? – haper

0

哪個控制器&行動的AJAX調用的jQuery內調用...將代碼放在一個ajax.js文件您的腳本目錄然後在需要使用該文件中的方法的頁面中引用它。然後,把任何服務器端邏輯爲您的Ajax調用在AjaxController例如:

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); 
    } 
} 

在上述_ajaxService的例子中,一個服務層包含處理您的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方法,你應該把它放在一個局部視圖並從每個需要它的角度引用它。