asp.net-mvc – 将索引设置为控制器的默认路由
发布时间:2020-05-25 10:10:29 所属栏目:asp.Net 来源:互联网
导读:我有一个网址 http://www.roadkillwiki.org/Page/Index/documentation 我想变成 http://www.roadkillwiki.org/Page/documentation 这也可能像http://www.roadkillwiki.org/Page/my-url-with-spaces – 参数是一个字符串.我试过的路线设置是: route
|
我有一个网址 > http://www.roadkillwiki.org/Page/Index/documentation 我想变成 > http://www.roadkillwiki.org/Page/documentation 这也可能像http://www.roadkillwiki.org/Page/my-url-with-spaces – 参数是一个字符串.我试过的路线设置是: routes.MapRoute(
"ControllerDefault","{controller}/{id}",new { controller = "Page",action = "Index",id = UrlParameter.Optional }
);
然而,这干扰了MVC项目带来的默认“id”路由.有没有办法实现这个目标? 解决方法您不需要丢失默认路由.避免路线相互干扰的关键是对它们进行排序,以便更具体的规则先于不太具体的规则.例如:// Your specialized route
routes.MapRoute(
"Page","Page/{slug}",action = "Index" }
);
// Default MVC route (fallback)
routes.MapRoute(
"Default",// Route name
"{controller}/{action}/{id}",// URL with parameters
new { controller = "Home",id = UrlParameter.Optional } // Parameter defaults
);
然后你的PageController看起来像这样: using System.Web.Mvc;
public class PageController : Controller
{
public string Index(string slug)
{
// find page by slug
}
}
也就是说,我强烈建议你这样做: // Your specialized route
routes.MapRoute(
"Page","Page/{id}/{slug}",slug = UrlParameter.Optional }
);
// MVC's default route (fallback)
routes.MapRoute(
"Default",id = UrlParameter.Optional } // Parameter defaults
);
而你的PageController: using System.Web.Mvc;
public class PageController : Controller
{
public string Index(int id)
{
// find page by ID
}
}
通过在URL的开头(如StackOverflow)或最后包含页面ID,您可以忽略slug,而是通过ID检索页面.如果您的用户更改页面名称,这将为您节省大量的麻烦.我经历过这一切,这很痛苦;你基本上必须记录你的页面过去所有的名字,这样你的访问者/搜索引擎每次重命名页面都不会得到404. 希望这可以帮助. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – 部分视图中的Razor部分包含
- asp.net-core – EntityFramework核心数据库首先接近多个表
- asp.net-mvc – ASP.NET MVC Master Detail Entry表单
- asp.net-mvc – ASP.NET MVC适合复杂的Web应用程序吗?
- asp.net-mvc – 如何将asp.net mvc集成到Web站点项目中
- asp.net-mvc – 在MVC中,何时使用%=%和%%?
- asp-classic – 从JScript代码调用VB编写的函数(经典ASP)
- asp.net-mvc – 如何在asp.net mvc中处理分页?
- asp.net-mvc – ELMAH没有记录违规代码行号
- asp.net-mvc – 传递参数到我的部分视图?
