我正在使用属性路由并发现它非常好。特别是我可以在许多不同的文化中本地化我的路线。
我遇到了一个不规则发生的问题 - 它有时会发生而不是其他人,我找不到模式。
我的操作方法是:
[GET("/")]
[GET("{productId:int}")]
[GET("{category2Id:int},{productId:int}/{category2Slug}/{productSlug}")]
[GET("{category2Id:int},{category3Id:int},{productId:int}/{category2Slug}/{category3Slug}/{productSlug}")]
[GET("{category2Id:int},{category3Id:int},{category4Id:int},{productId:int}/{category2Slug}/{category3Slug}/{category4Slug}/{productSlug}")]
public virtual ActionResult Index(int productId, string productSlug = null, string category2Slug = null, string category3Slug = null, string category4Slug = null, int? category2Id = null, int? category4Id = null, int? category4Id= null)
我的控制器上有以下装饰
[SessionState(SessionStateBehavior.Disabled)]
[RoutePrefix("product", TranslationKey = "product")]
public partial class ProductController
问题是有时属性渲染会生成正确的 url,例如。 https://localhost/product/22,33,999/cat2/cat3/product-name
但大多数情况下它会生成:https://localhost/product/999/?productSlug=product-name&category2Slug=cat2&category3Slug=cat3&category2Id=22&category3Id=33
知道为什么会发生这种情况,并且控制器操作参数被添加为查询字符串参数而不是 URL 的一部分吗?
我正在开发用 C# 开发的 mvc4 应用程序,属性路由的版本是 3.4.2.0。
有任何想法吗?