asp.net-mvc - asp mvc 在 Controller 名称和路由中使用破折号?

标签 asp.net-mvc url dynamic

我有两个问题。我对 MVC 相当陌生,并且喜欢 Controller 和 View 设置的新方式,但我不知道如何执行以下操作:

1) 创建一个类似 www.homepage.com/coming-soon 的网址

对于这种类型的网址,正确的做法是什么?您是否创建一个名为 ComingSoonController 的 Controller 并以某种方式通过路由神奇地插入破折号?请注意,我不想要下划线,因为这不符合 SEO 的最佳利益。或者即将推出一些不在 URL 中的其他 Controller 上的操作名称并使用 [ActionName("name-with-dash")] 属性?

2) facebook、linkedin 和 twitter 的 URL 类似于 www.facebook.com/[个人资料名称]。在 MVC 中这将如何完成?显然,[配置文件名称] 是动态的。代码显然会存在于一个称为配置文件的 Controller 中。所以在我看来,你必须让 MVC 足够聪明,才能知道 URL 的第二部分何时是配置文件名称而不是 Controller ,并将其路由到配置文件 Controller 上的正确操作?这比听起来容易吗?

最佳答案

1) 这取决于coming-soon是否是动态部分。我假设是这样,并会建议这样的事情:

全局.asax

public static void RegisterRoutes(RouteCollection routes)
{
 routes.MapRoute(
                "Page", // Route name
                "{pageName}", // URL with parameters
                new { controller = "Home", action = "Page"} // Parameter defaults
             );

}

public class HomeController : Controller
{

 public ActionResult Page(string pageName)
 {
  return View();
 }
}

2)您可以按照我上面所示的相同方式解决此问题,但请记住路由顺序很重要。第一个匹配的获胜。如果您想要两个具有不同逻辑但相似 url 结构 www.mysite.com/coming-soon 和 www.mysite.com/{profile name} 的操作,假设第一个 url 具有静态部分,而后面的动态则可以执行类似的操作这个:

全局.asax

public static void RegisterRoutes(RouteCollection routes)
{
 routes.MapRoute(
                "Coming-soon", // Route name
                "coming-soon", // URL with parameters
                new { controller = "Home", action = "ComingSoon" } // Parameter defaults
             );

 routes.MapRoute(
                "Profiles", // Route name
                "{profileName}", // URL with parameters
                new { controller = "Home", action = "Profile"} // Parameter defaults
            );
}

public class HomeController : Controller
{
 public ActionResult ComingSoon()
 {
  return View();
 }

 public ActionResult Profile(string profileName)
 {
  return View();
 }

}

关于asp.net-mvc - asp mvc 在 Controller 名称和路由中使用破折号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4744642/

上一篇:Python目录路径

下一篇:r - 谷歌分析与 R

相关文章:

css - 在 IE8 中,如何在没有任何重叠的情况下使用 Telerik 网格和 YUI3 网格?

asp.net-mvc - ASP.NET MVC 3 中的嵌套部分输出缓存

jquery - 如何在 mvc razor 中显示/隐藏网格行

javascript - 如何将 JavaScript 数据放入 Gmail 识别为 URL 的 URL 中?

android - 动态 ListView 扩展 Activity

javascript - 未选中时如何动态更改选项卡标题?

c - 在函数中调整结构数组的大小

c# - 如何验证IList外键? Entity Framework

regex - 如何从url中提取域名?

iOS 应用程序安装网址