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