Mac*_*ski 5 c# asp.net-mvc http-get asp.net-mvc-controller
我对StackOverflow很新,所以请原谅我无知的任何迹象.:)
我在Visual Studio 2010中使用MVC应用程序(用C#编写的控制器)有一个小问题.我想创建一个生成应用程序操作历史记录的方法,为此我想获取每次使用的控制器和操作的名称.不幸的是,保存我的控制器名称的字符串的第一个字母总是丢失.我用过这段代码:
string url = HttpContext.Current.Request.RawUrl;
RouteData route = RouteTable.Routes.GetRouteData(new OwnedContext(url));
var values = route.Values;
string controllerName = values["controller"].ToString();
string actionName = values["action"].ToString();
Run Code Online (Sandbox Code Playgroud)
OwnedContext的定义如下:
private class OwnedContext : HttpContextBase
{
private readonly HttpRequestBase mockHttpRequestBase;
public OwnedContext(string appRelativeUrl)
{
this.mockHttpRequestBase = new OwnedRequest(appRelativeUrl);
}
public override HttpRequestBase Request
{
get { return mockHttpRequestBase; }
}
}
Run Code Online (Sandbox Code Playgroud)
操作名称存储正确,但是当我调试此代码时,我看到controllerName字符串包含控制器的名称,但第一个(Capital)字母总是丢失,即使url字符串包含具有此模式的值:/ controller /行动.
我会感谢任何指针,代码示例或解释为什么会发生这种情况.如果我的描述不准确让我知道,我会改进它.
提前致谢 :)
编辑:解决方案:
发现问题(某种程度):OwnedContext出现了问题(在我原来的问题中定义).起初我使用routeValueDictionary作为HarHaHu建议,但原始问题仍然存在,直到我将httpContext作为GetRouteData的参数放置:
string url = HttpContext.Current.Request.RawUrl;
RouteData route = RouteTable.Routes.GetRouteData(httpContext);
UrlHelper urlHelper = new UrlHelper(new RequestContext(httpContext, route));
var routeValueDictionary = urlHelper.RequestContext.RouteData.Values;
string controllerName = routeValueDictionary["controller"].ToString();
string actionName = routeValueDictionary["action"].ToString();
Run Code Online (Sandbox Code Playgroud)
httpContext有自定义getter的地方:
public new HttpContextBase httpContext
{
get
{
HttpContextWrapper context =
new HttpContextWrapper(System.Web.HttpContext.Current);
return (HttpContextBase)context;
}
}
Run Code Online (Sandbox Code Playgroud)
这样我省略了OwnedContext并最终得到了我的控制器的全名(例如:Furniture而不是urniture).
谢谢你的提示.:)希望这有助于某人.祝好运!
var routeValueDictionary = urlHelper.RequestContext.RouteData.Values;
Run Code Online (Sandbox Code Playgroud)
将其与您的自定义上下文一起使用。
| 归档时间: |
|
| 查看次数: |
15297 次 |
| 最近记录: |