2013-10-16 59 views
0

我正在使用路由将所有url重定向到同一页面。routes asp.net webform default page

我不想指定每个页面的路由,因为内容管理系统正在改变它。

我只有2对项目

1)的Default.aspx

2)页cms.aspx

今天我用

routes.MapPageRoute("defaultRoute3", "{*value}", "~/cms.aspx"); 

和CMS直到。 aspx页面我使用此代码来了解要加载哪个视图

string objectCurrentNameUrl = Page.RouteData.Values["value"] as string; 

    string[] arrOfParmeters = objectCurrentNameUrl.Split('/'); 

一切都只是完美的一个参数 例如: mywebsite.com/zone

是重定向到cms.aspx,然后我做了分裂。

当试图使用antoher参数的URL

mywebsite.com/zone/114334

重定向是确定cms.aspx页面,但随后路由开始发送所有JavaScript的问题开始,CSS等也cms.aspx。

任何想法,所有的URL如何路由cms.aspx没有路线脚本和CSS

回答

0

编辑: 这个例子会帮助你只匹配扩展名的网址,因此将保留您的静态文件安全,正确地返回

public Route MapPageRoute(
    "defaultRoute3", 
    "{folder}/{id}", 
    "~/cms.aspx", 
    false, 
    null, 
    new RouteValueDictionary { { "id", "(.*)/([^\./]+)$" }} 
) 

这是您可以使用的完全超载below overload。使用约束参数排除静态文件

public Route MapPageRoute(
    string routeName, 
    string routeUrl, 
    string physicalFile, 
    bool checkPhysicalUrlAccess, 
    RouteValueDictionary defaults, 
    RouteValueDictionary constraints, 
    RouteValueDictionary dataTokens 
) 
+0

您可以将相关代码添加到您的答案吗?通常不会鼓励链接回答 - 如果链接改变或消失,您的回答将不再有帮助。 – MikeSmithDev

+0

谢谢@MikeSmithDev。更新。 –

+0

-1请更新以显示如何使用此重载来解决原始问题。 –