0

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

  1. http://www.myapp.com/brand/controller/action
  2. http://www.myapp.com/controller/action

两个 URL 都应指向控制器操作。

我试图在其中包含可选参数品牌,但没有运气。

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

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

任何想法?

4

1 回答 1

0

谢谢你的评论,斯蒂芬。

我想要的是在 URL 中注入可选参数品牌,品牌应该是一些字符串值,但在这里我想忽略它并直接纠正控制器操作。

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

RouteTable.Routes.MapMvcAttributeRoutes();

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

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

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

于 2018-04-11T16:25:08.727 回答