- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要通过ASP.NET MVC应用程序中给定的URL字符串来获取RoutData
。
我已经找到了根据我的URL字符串模拟HttpContextBase
并将其传递给Route Parsing (Uri to Route)线程中的RouteTable.Routes.GetRouteData()
方法的方式。
如何模拟HttpContextBase
以使用RouteData
通过URL字符串检索RouteTable.Routes.GetRouteData()
?
还是有另一种通过URL检索RouteData
的方法?
最佳答案
我使用Moq来确定HttpContextBase
中使用了哪些GetRouteData()
成员。他们是:
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
):
var rd = RouteUtils.GetRouteDataByUrl("~/Error/NotFound")
RouteData.Values
{
controller = "Error",
action = "NotFound"
}
关于asp.net-mvc - 如何通过URL获取RouteData?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3545432/
使用 ASP.Net 路由时,如何从代码隐藏中获取 RouteData? 我知道您可以从 RouteHandler 的 GetHttpHander 方法获取它(您将获得 RequestContext)
我试图在我的组件中接收 RouteData,但它没有像我预期的那样工作。我收到的消息是:ORIGINAL EXCEPTION: Invalid argument(s): No provider fou
令我惊讶的是,竟然没有文章详细回答这个问题。我有几个与 RouteData.Values[""] 相关的问题。 我看到了这段代码: public ActionResult Index() {
我的路线代码如下所示: RouteTable.Routes.MapPageRoute("IDP", "Person/{IDP}", "~/Person.aspx") 现在我想获取表单上的数据,通常它
给出以下代码: public class MyActionFilter : ActionFilterAttribute { public override void OnActionExecu
我通过 NuGet 将 Microsoft.Asp.Net.FriendlyUrls.Core.dll 安装到现有的 asp.net 4.5 Webforms 网站。 我的 RouteConfig 文
我正在开发一个 .net 核心应用程序。我正在尝试访问中间件中的路由数据,但它始终返回 null。 这是 Controller 基本路线 [Route("User/{UserId}/Quote")]
我正在自定义 Action Filter 中设置一些 RouteData filterContext.RouteData.Values.Add("accountId", accountId); fil
如果在使用 URL 路由时查询字符串中不存在以下语句,我将收到以下语句的 null 异常错误,我该如何处理以下语句的 NullReferenceException string lang = Rout
我正在尝试以编程方式将查询字符串映射到我在 RouteConfig.cs 文件中创建的 SEO 友好路由 URL,但似乎遇到困难。 我的路由配置如下所示: routes.MapRoute( n
我正在尝试更改我所有 Controller 的默认 ViewBag.Title,因此我想创建一个继承自 Controller 并在那里处理标题的基类: public class MyControlle
我正在构建一个连接到 Application_EndRequest/Application_BeginRequest 的简单性能记录器 我想将 action 和 controller 的名称作为某种
所以我创建了自己的 ControllerFactory 并重载了 GetControllerSessionBehavior 以扩展 MVC 行为。 为了完成我的自定义工作,我必须对调用的操作使用反射。
运行时出现错误 string quote = Page.RouteData.Values["quote"].ToString() ?? string.Empty; 错误:对象引用未设置到对象的实例。
当我尝试使用 TypeScript 在 Angular2 Beta 中使用 RouteData 时遇到问题。 我将它注入(inject)构造函数并正确导入 import {RouteConfig, R
我创建了一个新的 Web 窗体 (ASP.NET 4.5) 项目,我正在尝试让 URL 路由正常工作。 RouteConfig.cs 看起来像这样: routes.MapPageRoute("surv
我想使用 RouteConfig 将一个变量从我的 AppComponent 传递到 Coursescomponent,但是路由配置中的“data”属性只能传递常量参数,它无法识别“this”。有办法
如果我有这样的操作: public ActionResult DoStuff(List stuff) { ... ViewData["stuff"] = stuff; ...
我有使用 Microsoft.AspNet.FriendlyUrls 在 ASP.NET c# WebForms 中工作的路由,但 不是 对于所有页面。 下面是一个例子: routes.MapPage
我的 Global.asax 中有一条规则,如下所示: RouteTable.Routes.MapPageRoute("defaultRoute", "{*value}", "~/default.as
我是一名优秀的程序员,十分优秀!