【问题标题】:MVC route attribute no controllerMVC 路由属性无控制器
【发布时间】:2015-06-15 13:55:54
【问题描述】:

我正在构建一个内部网,其中有以下家庭控制器:

[Route("{action=index}")]
public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View(HomeModelBuilder.BuildHomeModel());
    }

    public ActionResult FormsHome()
    {
        return View(HomeModelBuilder.BuildFormsHomeModel());
    }
}

我正在尝试让我的表单主页的 URL 为 http://intranet/forms,所以我想我可以使用以下路由属性来做到这一点:

    [Route("~/forms")] // have also tried 'forms' and '/forms'
    public ActionResult FormsHome()

但是当我转到 url 时,它抱怨多个控制器具有该路由:

请求找到了以下匹配的控制器类型: HRWebForms.Website.Controllers.ChangeDetailsController HRWebForms.Website.Controllers.InternalTransferController HRWebForms.Website.Controllers.LeaverController ...

我也尝试将[RoutePrefix("")] 添加到控制器,但这也不起作用

有没有办法通过仅使用路由属性为该操作提供“表单”的 url(没有任何控制器或不添加带有索引的单独表单控制器)?

【问题讨论】:

  • 显示你的路线配置

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


【解决方案1】:

您可以尝试将 [RoutePrefix("forms")] 添加到您的控制器,但这会导致您的所有操作都需要相同的前缀。

也有一个解决方法(通过使用 [Route("~/RouteParam/AnotherRouteParam")] 让 Route "RouteParam/AnotherRouteParam"),但在我看来 FormsController 会花费更少的工作。

【讨论】:

    【解决方案2】:

    好吧,ranquild 的评论把我推向了正确的方向。在我的路由配置中,我的默认路由为

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

    这样我的主页仍然可以在没有任何内容的 url 上运行。如果我将其更改为

    // Needed for homepage
    routes.MapRoute(
        name: "Home",
        url: "",
        defaults: new { controller = "Home", action = "Index" }
    );
    
    // Needed for Html.ActionLink to work
    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}",
        defaults: new { controller = UrlParameter.Optional, action = UrlParameter.Optional }
    );
    

    好像解决了问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-09
      • 2014-11-27
      • 1970-01-01
      • 2021-08-12
      • 1970-01-01
      • 2019-10-03
      相关资源
      最近更新 更多