相关疑难解决方法(0)

ASP.net MVC自定义路由处理程序/约束

我需要使用以下网址实现一个MVC网站:

  • 类别1 /产物/ 1 /维基
  • 类别1 /产品/ 2 /维基
  • 类别1 /子类别2 /产品/ 3 /维基
  • 类别1 /子类别2 /子类别3 /产品/ 4 /维基
  • 等等

其中匹配条件是url以"wiki"结尾.

不幸的是,下面的catch-all仅适用于url的最后部分:

routes.MapRoute("page1", // Route name
                "{*path}/wiki", // URL with parameters
                new { controller = "Wiki", action = "page", version = "" } // Parameter defaults
Run Code Online (Sandbox Code Playgroud)

我没有时间通过​​MVC扩展性选项,所以我想知道实现这个的可能选择是什么?任何样本/示例都会非常棒!

asp.net-mvc constraints asp.net-mvc-routing

13
推荐指数
1
解决办法
1万
查看次数

ASP.NET路由:令牌之间的文字子段,以及带有来自文字子段的字符的路由值

我问的原因是因为IIS保护某些ASP.NET文件夹,如Bin,App_Data,App_Code等.即使URL没有映射到实际的文件系统文件夹,IIS也会拒绝路径段等于其中一个的URL提到的名字.

这意味着我不能有这样的路线:

{controller}/{action}/{id}
Run Code Online (Sandbox Code Playgroud)

...其中id可以是任何字符串,例如

Catalog/Product/Bin
Run Code Online (Sandbox Code Playgroud)

因此,我没有禁用此安全措施,而是愿意在id之前使用后缀更改路由,如下所示:

{controller}/{action}_{id} // e.g. Catalog/Product_Bin
{controller}/{action}/_{id} // e.g. Catalog/Product/_Bin
Run Code Online (Sandbox Code Playgroud)

但是如果id包含新的分隔符,这些路由将不起作用,在这种情况下,例如

// These URL won't work (I get 404 response)
Catalog/Product_Bin_
Catalog/Product/_Bin_
Catalog/Product/__Bin
Run Code Online (Sandbox Code Playgroud)

为什么?我不知道,对我来说就像一个小虫.如何使这些路由工作,其中id可以是任何字符串?

asp.net iis routing asp.net-routing

12
推荐指数
1
解决办法
603
查看次数