加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 在控制器名称和路由中使用破折号的asp mvc?

发布时间:2020-12-16 07:22:19 所属栏目:asp.Net 来源:网络整理
导读:我有两个问题.我是MVC的新手,喜欢设置控制器和视图的新方式,但我无法弄清楚如何执行以下操作: 1)制作一个网址,如www.homepage.com/coming-soon 对于这种类型的网址,正确的方法是什么?你创建一个名为ComingSoonController的控制器,并以某种方式神奇地通过路
我有两个问题.我是MVC的新手,喜欢设置控制器和视图的新方式,但我无法弄清楚如何执行以下操作:

1)制作一个网址,如www.homepage.com/coming-soon

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

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

解决方法

1)这取决于即将到来是否是动态部分.我会假设它是,并会建议这样的事情:

Global.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)您可以像我上面所示的那样解决问题,但请记住,路线的顺序很重要.并且第一个匹配胜利.如果你想要两个具有不同逻辑但类似网址结构的动作www.mysite.com/coming-soon和www.mysite.com/{profile name},假设第一个url有静态部分,后面的动态你可以做类似的事情这个:

Global.asax中

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

 routes.MapRoute(
                "Profiles",// Route name
                "{profileName}",action = "Profile"} // Parameter defaults
            );
}

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

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

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读