asp.net-mvc – Asp.Net MVC – “动态”路由的最佳方法
|
我试图提出一种创建“动态”路由的方法.我的意思是,我想要能够为每个命中分配一个路由的控制器和动作,而不是直接映射. 例如,路由可能看起来像这样“path / {object}”,并且当该路径被命中时,执行查找,提供适当的控制器/动作来进行调用. 我已经尝试发现创建自定义路由处理程序的机制,但是文档/可发现性在某种程度上是有点阴影的(我知道,它的beta – 我不会再期望).虽然,我不知道甚至最好的方法,甚至控制器工厂,甚至执行所有映射的默认控制器/动作可能是最好的路线(不是双关语). 任何建议将不胜感激. 解决方法您可以随时使用所有语法(我不知道名称是否正确).路线: routeTable.MapRoute( 控制器动作定义为: 在控制器的动作中,您将拥有一条路径,因此只需将其分散并分析即可. 要调用另一个控制器,您可以使用RedirectToAction(我认为这是更正确的方法).通过重定向,您可以为其设置永久重定向. internal class MVCTransferResult : RedirectResult
{
public MVCTransferResult(string url) : base(url)
{
}
public MVCTransferResult(object routeValues)
: base(GetRouteURL(routeValues))
{
}
private static string GetRouteURL(object routeValues)
{
UrlHelper url = new UrlHelper(
new RequestContext(
new HttpContextWrapper(HttpContext.Current),new RouteData()),RouteTable.Routes);
return url.RouteUrl(routeValues);
}
public override void ExecuteResult(ControllerContext context)
{
var httpContext = HttpContext.Current;
// ASP.NET MVC 3.0
if (context.Controller.TempData != null &&
context.Controller.TempData.Count() > 0)
{
throw new ApplicationException(
"TempData won't work with Server.TransferRequest!");
}
// change to false to pass query string parameters
// if you have already processed them
httpContext.Server.TransferRequest(Url,true);
// ASP.NET MVC 2.0
//httpContext.RewritePath(Url,false);
//IHttpHandler httpHandler = new MvcHttpHandler();
//httpHandler.ProcessRequest(HttpContext.Current);
}
}
但是这种方法需要在IIS或IIS上运行Expres Casinni不支持Server.Transfer方法 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – IIS 6.0和.Net 4的Default.aspx?
- asp.net-mvc – 如何在Visual Studio 2008和ASP.Net MVC中编
- asp.net-mvc-5 – 使用MVC属性路由的每个控制器的多个Route
- asp.net-mvc – ASP.NET MVC控制器动作设计
- 为什么32位应用程序池在IIS中更有效?
- asp.net-mvc-4 – 用于空响应的ASP.NET Web API和状态代码
- asp.net-mvc – 使用自定义值呈现Html.Hidden帮助器
- asp.net – 将自定义类添加到HttpContext
- asp.net – UpdatePanel中的DropDownList
- asp.net-mvc – 在ASP.NET MVC中创建ETag过滤器
- 如何使我的ASP.NET服务器控件将嵌入式代码块作为
- asp.net-mvc-3 – Request.Url何时可以为null?
- asp.net – 在Azure Web App中设置EF连接字符串
- 使用ASP.NET webAPI上载文件(最大文件大小为10Mb
- asp.net-mvc – ASP.NET MVC 5身份应用程序用户作
- 在asp.net mvc中如何使用usercontrols来显示“岛
- asp.net – Request.Browser.Platform不返回iPad
- asp.net-mvc-3 – 单元测试一个文件上传,怎么样?
- asp.net mvc调试器抛出SEHException
- asp.net-mvc – 如何根据设备类型更改ASP.NET MV
