使用属性时如何在MVC6中设置默认路由?

时间:2016-01-21 13:24:17

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

在MVC5中,您可以使用控制器上的以下属性设置默认路由?

〔路线(" {行动=索引}&#34)]

MVC6中的相当于什么?

更新

这是我在MVC5中的代码

    [Route("{action=index}")]
    public class StaticPagesController : Controller
    {
        public ActionResult About()
        {
           return View();
        }

        public ActionResult Contact()
        {
           return View();
        }

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

我无法弄清楚如何在MVC6中完成相同的工作,但我已经能够使用以下功能获得相同的功能:

    [Route("[action]")]
    public class StaticPagesController : Controller
    {
        public ActionResult About()
        {
           return View();
        }

        public ActionResult Contact()
        {
           return View();
        }

        [Route("/[action]")]
        [Route("/")]
        public ActionResult Index()
        {
           return View();
        }
    }

1 个答案:

答案 0 :(得分:1)

您可以使用Route属性修饰您希望成为默认操作的特定操作方法,并将[controller]作为路径模板传递给该方法。因此,只要您收到yoursite/yourcontroller的请求,传入的请求就会被重定向到此特定的操作方法。

public class SettingsController : Controller
{      
    public IActionResult Index()
    {
        return View();
    }

    [Route("[controller]")]
    public IActionResult OtherIndex()
    {
        return Content("This will be the response for mySite/Settings request");
    }
}

修改 根据评论

  

我不想在网址中包含控制器名称。我想要它   domain.com/About而不是domain.com/StaticPages/About

使用属性路由,您可以使用Route属性修饰操作方法,并将[action]作为模板名称。

public class StaticPagesController : Controller
{      
    [Route("[action]")]
    public IActionResult About()
    {
        // This action method will be executed for "yourSite/About" request
        return View();
    }
}

使用上述方法,您的应用中无法使用2个具有相同名称的操作方法例如:您不能拥有About操作方法HomeControllerStaticPagesController