【问题标题】:What Structure Is Needed For Static Content Secondary Pages?静态内容二级页面需要什么结构?
【发布时间】:2013-04-03 21:30:45
【问题描述】:

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

【问题讨论】:

  • 完全不清楚您要在这里做什么。你是什​​么意思,“让区域连字符”?这些 URL 是您拥有的还是您想要的?你有什么控制器/动作,你想用什么路由访问它们?您需要提供更多信息。

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


【解决方案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 中的区域前缀不必与实际区域名称匹配。)

【讨论】:

    猜你喜欢
    • 2012-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-09
    • 1970-01-01
    • 1970-01-01
    • 2012-09-08
    相关资源
    最近更新 更多