如何正确设置路由表以将URL指向控制器操作

时间:2018-04-10 19:50:39

标签: c# asp.net-mvc routetable

在MVC 5应用程序中,我想接受两种不同的请求URL:

  1. http://www.myapp.com/brand/controller/action
  2. http://www.myapp.com/controller/action
  3. 这两个URL都应该指向控制器操作。

    我尝试在其中加入可选参数品牌,但没有运气。

    RouteTable.Routes.MapRoute(
        "default",
        "{brand}/{controller}/{action}",
        new { brand = UrlParameter.Optional, controller = "Home", action = "Index" });
    

    显然在控制器之前不允许使用可选参数。

    有什么想法吗?

1 个答案:

答案 0 :(得分:0)

感谢您的评论,Stephen。

我想要的是将可选参数品牌注入URL,品牌应该是一些字符串值,但在这里我想忽略它并指示正确的控制器动作。

好吧,我找到了一个可能对这种情况有用的函数:

RouteTable.Routes.MapMvcAttributeRoutes();

但问题是我必须为每个控制器操作添加Route属性,例如:

  public class LoginController : Controller
  {
    [HttpGet]
    [Route("~/{brand}/Login")]
    [Route("~/Login")]
    public ActionResult Index()
    {
      return View();
    }
  }

也许我需要找一些如何使用属性路由的例子。