1
我有可變URL(所以我不能使用RouteData.Values [「行動」]):如何從URL變量取得動作的名稱,而不是從的RouteData
string url = "/aaaa/bbb?c=5";
我怎樣才能行動變量中的這個url的名字?
我有可變URL(所以我不能使用RouteData.Values [「行動」]):如何從URL變量取得動作的名稱,而不是從的RouteData
string url = "/aaaa/bbb?c=5";
我怎樣才能行動變量中的這個url的名字?
如果你正在使用realtive網址,使用提供功能HttpRequest
需要完整路徑
string url = GetApplicationPath(HttpContext.Request) + "/aaaa/bbb?c=5";
var request = new HttpRequest(null, url, "");
var response = new HttpResponse(new StringWriter());
var httpContext = new HttpContext(request, response);
var routeData = RouteTable.Routes.GetRouteData(new HttpContextWrapper(httpContext));
var values = routeData.Values;
var controller = values["controller"]; //aaaa
var action = values["action"]; //bbb
值控制器和行動將在Global.asax
取決於,路線設置,如果你有以下設置
application path
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
輸出將是
var controller = values["controller"]; //aaaa
var action = values["action"]; //bbb
但是你已經設置爲
routes.MapRoute(
"Default", // Route name
"{action}/{controller}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
輸出將被
var controller = values["controller"]; //bbb
var action = values["action"]; //aaaa
添加一個效用函數功能
private string GetApplicationPath(HttpRequestBase request)
{
var path = request.Url.Scheme + "://" + request.Url.Host;
if (request.ApplicationPath != @"/")
{
path += request.ApplicationPath;
}
if (!path.EndsWith(@"/"))
{
path += "/";
}
return path;
}