首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在AttributeRouting MVC 5中配置ASP.NET

在AttributeRouting MVC 5中配置ASP.NET
EN

Stack Overflow用户
提问于 2016-12-10 05:45:26
回答 2查看 562关注 0票数 1

我有一个区域RetailersAssistance和一个控制器-

代码语言:javascript
复制
namespace SkyTracker.Areas.RetailersAssistance.Controllers
{
  [RouteArea("ra")]
  public class LoginController : Controller
  {       
    [Route("foo")]
    public ActionResult Test()
    {
        return View();
    }
 }
}

我想通过Test()通过http://localhost:61899/ra/foo达到动作方法。

我已经将RouteConfig.cs配置为允许属性路由-

代码语言:javascript
复制
public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

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

这是我的区号-

代码语言:javascript
复制
public class RetailersAssistanceAreaRegistration : AreaRegistration 
{
    public override string AreaName 
    {
        get 
        {
            return "RetailersAssistance";
        }
    }


    public override void RegisterArea(AreaRegistrationContext context) 
    {

        context.MapRoute(
            "RetailersAssistance_default",
            "ra/{controller}/{action}/{id}",
            new {controller="Login",  action = "Test", id = UrlParameter.Optional },
            new[] { "SkyTracker.Areas.RetailersAssistance.Controllers" }
        );
    }
}

但是上面的url返回404。我错过了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-10 09:27:02

在context.Routes.MapMvcAttributeRoutes()方法中使用RegisterArea (),如下所示:

代码语言:javascript
复制
public override void RegisterArea(AreaRegistrationContext context)
    {
        context.Routes.MapMvcAttributeRoutes();
        context.MapRoute(
            "RetailersAssistance_default",
            "ra/{controller}/{action}/{id}",
            new { controller = "Login", action = "Test", id = UrlParameter.Optional },
            new[] { "SkyTracker.Areas.RetailersAssistance.Controllers" }
        );
    }
票数 0
EN

Stack Overflow用户

发布于 2016-12-10 07:50:46

使用ActionName而不是路由属性。变化

代码语言:javascript
复制
 [Route("foo")]
 public ActionResult Test()
 {
        return View();
  }

代码语言:javascript
复制
[ActionName("foo")]
public ActionResult Test()
{
   return View();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41072598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档