我将在我的 asp.net4.0 应用程序中实现路由功能,并遵循给定的链接:
如果应用程序的编号有限,这很好。页面,但我的应用程序有很多页面。所以我必须编写代码 [ routes.MapPageRoute("","",""); ] 很多次。我们可以通过循环任何集合类或任何其他方法来映射所有页面吗?
谢谢
我将在我的 asp.net4.0 应用程序中实现路由功能,并遵循给定的链接:
如果应用程序的编号有限,这很好。页面,但我的应用程序有很多页面。所以我必须编写代码 [ routes.MapPageRoute("","",""); ] 很多次。我们可以通过循环任何集合类或任何其他方法来映射所有页面吗?
谢谢
如果您的 url 和文件结构有标准模式,您也可以在映射的 url 中使用占位符
例如。如果您可以将每个“{controller}/{action}/{id}”映射到“/Pages/{controler}/{action}.aspx”
例如,我构建了一个具有此文件夹结构的站点
在根文件夹下有我所有页面所在的 Views 文件夹。在 Views 文件夹下,每个“控制器”都有一个子文件夹(webforms 中没有控制器,但我在这里遵循 MVC 约定) 在控制器子文件夹下,有代表不同操作的 aspx 页面
每个控制器的 aspx 页面名称都相同(“Index.aspx”、“Add.aspx”、“Edit.aspx”等)
所以我可以有一个通用的映射规则
routes.MapPageRoute("GeneralAction", "{controler}/{action}/{id}", "~/Views/{controler}/{action}.aspx");
只要文件夹结构遵循这种模式,我就不需要为不同的页面设置不同的规则
现在
"/Patient/Add" will map to "~/Views/Patient/Add.aspx"
"/Incident/Add" will map to "~/Views/Incident/Add.aspx"
"/Patient/Edit/31" will map to "~/Views/Patient/Edit.aspx" (with id=31)
等等,都符合上述这一规则。
当然,如果您想覆盖此规则,您可以在定义此规则之前定义更具体的路线。