我有6个产品页面。其中一个产品页面将有6个辅助页面。
我如何为此创建控制器,以便最终获得干净的链接。
/Products/Product1
/Products/Product2
/Products/Product3
/Products/Product4
/Products/Product5
/Products/Product6
/Products/Product6/SecondaryPage1
/Products/Product6/SecondaryPage2
/Products/Product6/SecondaryPage3
/Products/Product6/SecondaryPage4
/Products/Product6/SecondaryPage5
/Products/Product6/SecondaryPage6
我已经调查了一些区域并且可以完成我想要的东西,但是如果有下划线,那我就没有运气获取区域名称和连字符。我可以得到控制器和动作连字符,但不是区域。如果有人知道如何将该区域连接起来,我将再次沿着这条路走下去。
更多信息
这些是静态内容页面。没有涉及数据库。如何设置单个控制器来生成上面的URL?我的问题是二级页面以及如何处理它们。区域是唯一的方法,如果是这样,我如何修改路由以允许区域名称中的连字符,因为我将来可能需要它?
答案 0 :(得分:1)
您的问题确实没有意义,特别是考虑到您想要的URL不包含任何连字符,但通常情况下,区域的路由由名为[AreaName]AreaRegistration.cs
的文件控制。在该文件的类中,有方法:
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"MyArea_default",
"MyArea/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}
因此,您可以通过更改此默认路由轻松更改区域在URL中的表示方式:
"My-Area/{controller}/{action}/{id}",
(注意添加的连字符。这只是一个字符串,无论你喜欢它都可以看起来。URL中的区域前缀不必与实际的区域名称相匹配。)