asp.net-mvc – 如何通过URL获取RouteData?
|
我需要通过ASP.NET MVC应用程序中给定的URL字符串获取RoutData。 我发现了我需要模拟HttpContextBase基于我的URL字符串,然后将其传递给RouteTable.Routes.GetRouteData()方法在Route Parsing (Uri to Route)线程的方式。 如何模拟HttpContextBase通过URL字符串使用RouteTable.Routes.GetRouteData()检索RouteData? 解决方法我使用 Moq来确定HttpContextBase的什么成员在GetRouteData()中使用。他们是:>请求 > AppRelativeCurrentExecutionFilePath Request.AppRelativeCurrentExecutionFilePath应该返回路径,我真正需要的,所以实用程序类可能是这样的: public static class RouteUtils
{
public static RouteData GetRouteDataByUrl(string url)
{
return RouteTable.Routes.GetRouteData(new RewritedHttpContextBase(url));
}
private class RewritedHttpContextBase : HttpContextBase
{
private readonly HttpRequestBase mockHttpRequestBase;
public RewritedHttpContextBase(string appRelativeUrl)
{
this.mockHttpRequestBase = new MockHttpRequestBase(appRelativeUrl);
}
public override HttpRequestBase Request
{
get
{
return mockHttpRequestBase;
}
}
private class MockHttpRequestBase : HttpRequestBase
{
private readonly string appRelativeUrl;
public MockHttpRequestBase(string appRelativeUrl)
{
this.appRelativeUrl = appRelativeUrl;
}
public override string AppRelativeCurrentExecutionFilePath
{
get { return appRelativeUrl; }
}
public override string PathInfo
{
get { return ""; }
}
}
}
}
如果你传递/ Error / NotFound,例如,RouteUtils.GetRouteByUrl(“/ Error / NotFound”)返回类似 RouteData.Values
{
controller = "Error",action = "NotFound"
}
也许这将有助于任何人。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – Asp.Net MVC:为什么我的视图将NULL模型传递
- 了解ASP.Net会话的生命周期
- 如何在ASP.NET GridView中找到控件的客户端ID?
- ASP.NET网址MAX_PATH限制
- asp.net-mvc-3 – Asp.net Mvc3 webgrid和分页
- asp.net-mvc – 如何在ASP.NET MVC中执行[RequireHttps(Red
- ASP.NET MVC 3 Ajax.BeginForm和Html.TextBoxFor不反映在服
- asp.net – 如何获取网站根URL?
- asp.net – 我可以在global.asax.cs中访问虚拟目录名吗?
- asp.net – 如何在Win Server 2k8和IIS7上修复404.17错误
- asp.net-mvc – 将返回文件的长时间运行进程
- ASP.NET分析器错误无法加载代码
- asp.net-mvc – 在Controller或其他地方渲染部分
- asp.net-mvc – Action()和RenderAction()之间的
- asp.net-mvc-3 – 在Application_Start中访问nin
- asp.net – 对象“aspnet_CheckSchemaVersion”,
- asp.net – Web部署安装程序(MSI)中没有“IIS 7部
- asp.net-mvc – 如何单元测试HtmlHelper与Moq?
- asp.net – 很好的复杂linq到sql示例?
- asp.net-mvc – “添加控制器”/“添加视图”在混
