在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();
}
}
答案 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
操作方法HomeController
和StaticPagesController
)