【问题标题】:Url not hitting MVC attribute based routing controller网址未命中基于 MVC 属性的路由控制器
【发布时间】:2019-10-03 12:13:16
【问题描述】:

我在 MVC 应用程序中使用基于属性的路由。我的代码是 -

[RouteArea("MasterData")]
[RoutePrefix("BrandFacilityShipmentMaintenance")]
public class BrandFacilityShipmentMaintenanceController : Controller
{
    [Route("Index")]
    public ActionResult Index()
    {

    }
}

我正在尝试使用可变参数来访问网址,例如

/MasterData/BrandFacilityShipmentMaintenance/Index
/MasterData/BrandFacilityShipmentMaintenance/Index/1156?pid=1120
/MasterData/BrandFacilityShipmentMaintenance/Index/1156?pid=1120&fname=Brand+Facility+Shipment+Maintenanca
/MasterData/BrandFacilityShipmentMaintenance/Index/1156?pid=1120&fname=Brand+Facility+Shipment+Maintenanca&isReffered=false

但它说找不到资源。这些所有 url 在基于传统的路由中都命中了相同的索引操作。我应该改变什么才能使它在基于属性的路由中工作。

AreaRegistration.cs -

public override void RegisterArea(AreaRegistrationContext context) 
{
    context.Routes.MapMvcAttributeRoutes();
    context.MapRoute(
        "Masterdata_default",
        "Masterdata/{controller}/{action}/{id}",
        new { action = "Index", id = UrlParameter.Optional }
    );
}

【问题讨论】:

  • 发布您的 RouteConfig 代码以获得更好的清晰度
  • @MannanBahelim 发布

标签: c# .net asp.net-mvc asp.net-mvc-routing


【解决方案1】:

url 参数映射到方法的参数,所以你需要在方法的签名中指定它们。

public string Index(int id, int? pid)  { ... }

来自here

编辑: 您也可以通过这种方式访问​​您的查询字符串参数:

public ActionResult Index(int id)
{ 
    string param1 = this.Request.QueryString["pid"];
    // parse int or whatever
}

EDIT2:This 也是不错的阅读材料

【讨论】:

    【解决方案2】:

    您可能正在将基于约定的路由与属性路由结合起来,并且您应该在映射属性路由后注册您的区域。

    Application_Start()RouteConfig.RegisterRoutes(RouteTable.Routes)之后添加区域注册

    AreaRegistration.RegisterAllAreas();
    

    尝试在RouteArea中使用命名参数“AreaPrefix”

    [RouteArea("MasterData", AreaPrefix = "MasterData")]
    

    它应该工作。

    您也可以通过以下方式删除 RouteArea 属性并仅使用 RoutePrefix

    [RoutePrefix("MasterData/BrandFacilityShipmentMaintenance")]
    

    【讨论】:

    • 我没有在您的代码中看到 AreaPrefix 所以建议这样做。尝试在 RouteArea 中添加 AreaPrefix
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-27
    • 1970-01-01
    • 2017-07-03
    • 2019-06-26
    相关资源
    最近更新 更多