Mvc定制路线

时间:2018-05-04 07:01:26

标签: asp.net asp.net-mvc routing

我只想在asp.net mvc中自定义路由, 这是一个博客网站,我想使用

访问控制器方法
  

wwww.sitename.com/blog/ {BLOGTITLE}

     

www.sitename.com/blog/ {动作}

博客控制器

 public class BlogController : Controller
{

  public ActionResult Index(string title)
    {
        return View();
    }



        [Route("post-blog")]
    [HttpPost]
    public ActionResult Post(Blog blog,HttpPostedFileBase blogimage)
    {

        //some coe

    }
    [Route("post-blog")]
    public ActionResult Post()

    {

        if (Request.Cookies["userInfo"]==null)
        {
            return Redirect("/login");
        }

        return View();
    }

}

这是路线配置

  public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        //routes.Canonicalize().Www();
        routes.Canonicalize().Lowercase();




        routes.MapMvcAttributeRoutes();

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "freelogomaker", id = UrlParameter.Optional }
        );


  }

但我无法使用www.site.com/blog/titlename点击动作名称“Index” 但我可以使用www.site.com/blog/post-blog

访问“post-blog”

请帮助我,我是asp.net mvc路由的初学者。

1 个答案:

答案 0 :(得分:1)

将您的参数添加到{}括号内的路由属性,以指示它应该从URL中读取,而不是从其他内容中读取(例如POST正文,依赖注入等)

[RoutePrefix("blog")]
public class BlogController : Controller

我还想将RoutePrefix属性添加到控制器中以使其更清晰。

{{1}}