asp.net-mvc – 在控制器名称和路由中使用破折号的asp mvc?
我有两个问题.我是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(); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – ASP.NET MVC 3 Treeview
- asp.net – 在Visual Studio 2010 SP1中使用IIS Express时出
- asp.net-web-api – ember-data:根据需要加载hasMany关联
- asp.net – MVC 4可以在.net 3.5上运行吗?
- asp.net-mvc – asp.net mvc针对不同操作的不同验证规则
- asp.net – 我应该将MDF文件附加到SQL Express还是将实际部
- 发布ASP.NET应用程序时,是否应该将构建类型更改为Visual St
- asp.net-web-api2 – 使用未绑定功能时具有多个路由的OData
- asp.net-mvc – ASP.NET MVC – 解决方案布局建议
- asp.net – HttpCookieCollection.Add和HttpCookieCollecti