静态内容辅助页面需要什么结构?

时间:2013-04-03 21:30:46

标签: asp.net-mvc asp.net-mvc-4 asp.net-mvc-routing

我有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?我的问题是二级页面以及如何处理它们。区域是唯一的方法,如果是这样,我如何修改路由以允许区域名称中的连字符,因为我将来可能需要它?

1 个答案:

答案 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 }
    );
}

因此,您可以通过更改此默认路由轻松更改区域在U​​RL中的表示方式:

"My-Area/{controller}/{action}/{id}",

(注意添加的连字符。这只是一个字符串,无论你喜欢它都可以看起来。URL中的区域前缀不必与实际的区域名称相匹配。)