如何在ASP.NET MVC中創建自定義路由處理程序?ASP.NET MVC,操作URL結構
回答
ASP.NET MVC可以很容易地在Global.asax.cs中創建一個自定義路由處理:
routes.MapRoute(
"Default",
"{controller}.aspx/{action}/{id}",
new { action = "Index", id = "" }
).RouteHandler = new SubDomainMvcRouteHandler();
這將導致所有請求由指定的自定義RouteHandler被處理。對於這個特殊的處理程序:
public class SubDomainMvcRouteHandler : MvcRouteHandler
{
protected override IHttpHandler GetHttpHandler(System.Web.Routing.RequestContext requestContext)
{
return new SubDomainMvcHandler(requestContext);
}
}
那麼你可以做任何你想要的,在這種情況下,SubDomainMvcHandler從URL抓取的子域名並將其傳遞給控制器的特性:
public class SubDomainMvcHandler : MvcHandler
{
public SubDomainMvcHandler(RequestContext requestContext) : base(requestContext)
{
}
protected override void ProcessRequest(HttpContextBase httpContext)
{
// Identify the subdomain and add it to the route data as the account name
string[] hostNameParts = httpContext.Request.Url.Host.Split('.');
if (hostNameParts.Length == 3 && hostNameParts[0] != "www")
{
RequestContext.RouteData.Values.Add("accountName", hostNameParts[0]);
}
base.ProcessRequest(httpContext);
}
}
完美。謝謝傑森!出於興趣,感謝SO的解決方案的一般方法是什麼?評論或其他方式? – 2009-04-17 11:23:30
我認爲在這樣的同行評審社區中,「感謝」已經足夠;-) – Jason 2009-05-08 19:46:34
因此,它將成爲控制器方法中的一個屬性? – 2011-10-03 15:15:58
- 1. ASP.NET MVC - URL操作路徑
- 2. Asp.Net MVC後操作結果
- 3. Asp.net MVC URL和目錄結構
- 4. ASP.NET MVC虛擬操作結果
- 5. ASP.NET MVC Ajax的操作結果包圍
- 6. ASP.NET MVC Web結構
- 7. 操作在ASP.NET MVC
- 8. ASP.net MVC項目結構
- 9. ASP.NET MVC路由和結構
- 10. ASP.Net MVC查看結構
- 11. ASP.NET MVC 3路由結構
- 12. ASP.NET MVC體系結構
- 13. ASP.NET MVC與DDD結構
- 14. ASP.NET MVC 3文件結構
- 15. ASP.NET MVC 5 EF6結構
- 16. ASP.NET MVC RESTFul體系結構
- 17. ASP.NET MVC體系結構
- 18. ASP.Net url路由結構
- 19. ASP.Net MVC動作鏈接/ Url爲javascript表操作 - datatable.net
- 20. 字符串操作(ASP.NET MVC)
- 21. ASP.NET MVC的操作方法
- 22. ASP.NET MVC編輯操作?
- 23. ASP.NET MVC定時操作
- 24. ASP.NET MVC操作+擴展
- 25. Asp.Net mvc嵌套操作HTTPPOST
- 26. ASP.net MVC window.open URL不工作
- 27. 結構引用操作(操作符 - >)
- 28. 帶有非標準url結構的ASP.NET MVC路由
- 29. ASP.NET Web API操作結果
- 30. Asp.Net MVC不會在url中顯示索引操作
是什麼你試圖達到?你需要更具體一點 – 2009-04-16 10:55:54
嗨安德魯,我已經重寫了我的問題,我希望更具體。爲評論歡呼。傑米 – 2009-04-16 21:26:51