Ajax操作URL到局部视图内的控制器

时间:2012-01-26 02:22:59

标签: asp.net ajax asp.net-mvc asp.net-mvc-3 jquery

我有一个局部视图,有双列表框和四个按钮;完全是这样的 http://www.meadmiracle.com/dlb/DLBPlugin.aspx

现在我想在整个站点中重用这个局部视图,每次用户点击按钮将内容移入和移出列表时,我希望通过Ajax将其保存在数据库中,我正在制作一个使用JQuery调用Ajax;这造成了一个困难,因为Ajax调用的URL将根据响应该调用的控制器而有所不同!

$.ajax({
        type: "POST",
        url: '@Url.Action("######HOW TO FIGRE OUT WHICH CONTROLLER #######")',
        success: function (data) {
    //Show some message to the user
        }
    });

现在我该如何确定网址?它将是动态的,它将基于响应初始索引页面的控制器。

例如:如果我在城市或城镇页面,用户将城市和城镇移动到列表框,我怎么知道它是CityController ajax动作或TownController ajax动作,我们如何在局部视图中知道这一点在哪里发布ajax电话?

1 个答案:

答案 0 :(得分:2)

让你的PartialView使用一个Model,它有一些定义要调用的URL的属性,然后调用局部视图的View传递这个模型,这样你的AJAX就知道要调用哪个View

e.g。

ViewModel

public class DualListBoxViewModel {
   public string Controller { get; set; }
   public string Action { get; set; }      
}

部分视图

@model DualListBoxViewModel 
$.ajax({
        type: "POST",
        url: '@Url.Action(model.Controller, model.Action)',
        success: function (data) {
    //Show some message to the user
        }
    });

调用PartialView的视图

@{ Html.RenderPartial("DualListBoxWithAjax", new DualListBoxViewModel { Controller = "Town", Action = "UpdateListBox" } ); }