簡體   English   中英

ASP.NET 4路由問題

[英]ASP.NET 4 routing question

我正在嘗試在Global.asax文件中執行以下操作:

目前,我必須像這樣定義路線:

routes.MapPageRoute(
    "ViewPage", 
    "pages/{slug}",
    "~/viewpage.aspx",
    false
);

注意{slug}之前的單詞頁面

現在,如果我這樣定義它:

routes.MapPageRoute (
    "ViewPage", 
    "{slug}",
    "~/viewpage.aspx",
    false
);

這是行不通的。

我的CSS和JS文件無法加載,我得到404。

但是,如果我這樣做:

routes.MapPageRoute (
    "ContactPage", 
    "contact",
    "~/contact.aspx",
    false
);

它工作正常嗎?

基本上我希望我的網址看起來像這樣:

example.com/contactexample.com/about-us ,所有這些都基於{slug}從數據庫動態提供。

有人可以幫忙嗎?

使用方法:

RouteTable.Routes.MapPageRoute("slug", 
                "{slug}",
                "~/page.aspx", false);

對我來說很好。 您需要確保路線順序正確; 特定於常規,但也忽略資源等。否則它們也將被路由到那里。

希望能有所幫助

編輯

忽略以下路線:

RouteTable.Routes.Ignore("{resource}.axd/{*pathInfo}");

如何忽略asp.net形式的URL路由中的路由

也許是這樣的,盡管我目前無法測試。 據我了解,它應該告訴路由處理程序忽略那些目錄中的任何內容。

routes.Add(new Route("images/", new StopRoutingHandler()));
routes.Add(new Route("js/", new StopRoutingHandler()));
routes.Add(new Route("css/", new StopRoutingHandler()));

多謝你們!!

我不得不重新安排路線。

我使用HttpHandler來組合和gzip我的js和css文件。 最后添加的內容如下:

const string combine = "~/code/httphandlers/httpcombiner.ashx";
RegisterRoutes(RouteTable.Routes);
RouteTable.Routes.Add(new Route("combine", new HttpHandlerRoute(combine)));

我將這些切換到:

const string combine = "~/code/httphandlers/httpcombiner.ashx";
RouteTable.Routes.Add(new Route("combine", new HttpHandlerRoute(combine)));
RegisterRoutes(RouteTable.Routes);

我為webresource.axd添加了StopRoutingHandler,現在一切正常!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM