ASP .NET MVC3 ajax从各个页面调用相同的函数

时间:2011-12-01 14:26:34

标签: c# ajax asp.net-mvc-3

如何使用来自不同页面的ajax调用相同的操作?

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

我目前正在使用上面的代码来调用我的操作。它适用于我的应用程序的主页,但是当我更改到其他页面时,这不起作用。任何人都可以给我一个解决方案吗?谢谢。

2 个答案:

答案 0 :(得分:3)

继续我通常做的是指向哪个控制器&在ajax jquery调用中调用的动作......

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

            }
        });

使用Url.Action()构建链接

答案 1 :(得分:0)

将代码放在脚本目录中的ajax.js文件中,然后在需要使用该文件中的方法的页面中引用它。然后,在AjaxController中为您的ajax调用放置任何服务器端逻辑,例如:

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方法,你应该把它放在局部视图中并从每个需要它的视图中引用它。