Asp.Net MVC如何在浏览器页面URL末尾添加信息
Asp.Net MVC 自定义文章页面URL实现方法
要把文章页面URL从https://localhost:44328/Blog/Article改成https://localhost:44328/Blog/Article/article-name,按下面几步操作:
修改路由规则
打开项目App_Start文件夹下的RouteConfig.cs,新增一条自定义路由(务必放在默认路由前面,否则会被默认规则覆盖):routes.MapRoute( name: "BlogArticle", url: "Blog/Article/{articleName}", defaults: new { controller = "Blog", action = "Article", articleName = UrlParameter.Optional } );这条规则会匹配
Blog/Article/xxx格式的URL,把xxx作为参数传递给Article Action。更新Controller的Action方法
找到BlogController,修改Article方法,添加articleName参数用来接收URL中的文章标识:public ActionResult Article(string articleName) { // 这里编写根据articleName获取文章的逻辑,比如从数据库查询对应内容 var targetArticle = YourArticleRepository.GetBySlug(articleName); if (targetArticle == null) { return HttpNotFound(); } return View(targetArticle); }生成正确的跳转链接
在视图里生成文章链接时,使用Url.Action方法传递articleName参数:@Url.Action("Article", "Blog", new { articleName = "your-article-slug" })这样生成的链接就是符合要求的
/Blog/Article/your-article-slug。兼容旧URL(可选)
如果需要处理原来的/Blog/Article访问请求,比如重定向到某个默认文章,可以给Article Action添加无参数的重载:public ActionResult Article() { // 重定向到默认文章或者返回文章选择页面 return RedirectToAction("Article", new { articleName = "default-article" }); }
内容的提问来源于stack exchange,提问作者Leonardo Silva
相关产品推荐
相关产品推荐

