ASP.NET MVC jQuery的负载用户控件尊重命名空间

我对这个控制器代码 “/Controllers/Cubo/FilterController.cs”ASP.NET MVC jQuery的负载用户控件尊重命名空间

using System; 

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.Mvc;

using System.Web.Mvc.Ajax;

namespace Mkt.Web.Controllers.Cubo

{

public class FilterController : Controller

{

//

// GET: /Filter/

public ActionResult Index()

{

return View();

}

public ActionResult GetPeople()

{

return View("~/Views/Shared/Cubo/Filter/People.ascx");

}

public ActionResult GetAddress()

{

return View("~/Views/Shared/Cubo/Filter/Address.ascx");

}

}

}

调用JavaScript中使用jQuery:

(function($) { 

$.fn.loadFilter = function(name, data, fn) {

data = (typeof (data) == "undefined") ? {} : data;

fn = (typeof (fn) == "undefined") ? null : fn;

$(this).empty();

$(this).load("/Filter/Get" + name + "", data, fn);

};

})(jQuery);

$("#containerFilter").loadFilter("People");

但是当我在“FilterController”中调用“GetPeople”时,我需要调用目录名称“Cube”。 我该怎么做才能使用目录名称来获得更好的订单?

编辑: 我需要打电话为“$(this).load("/Cube/Filter/Get" + name + "", data, fn);”。提到“/Controllers/Cubo/FilterController.cs

回答:

我会通过增加新的途径向全球应用程序文件Global.asax中(Global.asax中解决这个服务器上。 vb或global.asax.cs,如果你正在使用代码分离)。

您将添加一个新的路线是这样的:

routes.MapRoute("UserControlRoute", "/Cube/Filter/{action}",new { controller = "FilterController" }); 

那么URL“/立方/过滤/ GetPeople”将被映射到FilterController的GetPeople作用。

您可以选择specifiy一个默认的控制器是这样的:

routes.MapRoute("UserControlRoute", "/Cube/Filter/{action}",new { controller = "FilterController", action = "DefaultAction" }); 

然后将链接“/立方/过滤/”映射到“DEFAULTACTION”行动也是如此。

如果你想“魔方”切换到别的东西那么这可以被设置为参数,以及:

routes.MapRoute("UserControlRoute", "/{cube}/Filter/{action}",new { controller = "FilterController", action = "DefaultAction", cube="DefaultCube" }); 

你需要在这个文件中作出更改路线后的重新编译应用程序。 “UserControlRoute”是您要调用路由的任何名称,它们必须是唯一的。

更多的信息在这里; http://www.asp.net/learn/mvc/tutorial-23-cs.aspx

回答:

我建议使用UrlHelper为您的加载操作构建您的URL。这应该使URL相对于当前路径。这假定你的javascript在你看来。如果没有,那么我会在您的视图中构建url并将完整的url传递给此函数。

(function($) { 

$.fn.loadFilter = function(name, data, fn) {

data = (typeof (data) == "undefined") ? {} : data;

fn = (typeof (fn) == "undefined") ? null : fn;

$(this).empty();

$(this).load('<%= Url.Action("Get") %>' + name, data, fn);

};

})(jQuery);

另一种方法 - 基于保持javascript在一个单独的文件。在这种情况下,没有办法在javascript中使用UrlHelper,并且您需要修改函数以使用方法的全名称,而不仅仅是合格的部分。

在JS文件:

(function($) { 

$.fn.loadFilter = function(url, data, fn) {

data = (typeof (data) == "undefined") ? {} : data;

fn = (typeof (fn) == "undefined") ? null : fn;

$(this).empty();

$(this).load(url, data, fn);

};

})(jQuery);

鉴于:

$('#people').loadFilter('<%= Url.Action("GetPeople") %>', null, null); 

以上是 ASP.NET MVC jQuery的负载用户控件尊重命名空间 的全部内容, 来源链接: utcz.com/qa/267125.html

回到顶部