【问题标题】:Action Link to "lose" parameter“丢失”参数的操作链接
【发布时间】:2012-06-20 15:21:01
【问题描述】:

我有以下路线:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(null,"Conference/{shortName}/Submission/{submission}/{action}", new { controller = "Conference", action = "Show" });
routes.MapRoute(null,"Conference/{shortName}/{action}",new { controller = "Conference", action = "Index" });
routes.MapRoute("Default", "{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
        );

以下(希望是显而易见的)链接都可以正常工作:

  • /会议/testconf
  • /Conference/testconf/ShowSubmissions
  • /Conference/testconf/Submission/firstSub
  • /Conference/testconf/Submission/firstSub/EditSubmission

当我现在处于 Submission/firstSub 并创建一个像这样的 ActionLink 时

@Html.ActionLink("Show Submissions", "ShowSubmissions", "Conference", new { shortName = Model.confereceShortName },null)

它会创建以下链接

  • /Conference/testconf/Submission/firstSub/ShowSubmissions

如何让 actionlink 忘记 Submission/firstSub 而不在那里硬编码?

【问题讨论】:

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


    【解决方案1】:

    {controller} 的占位符在哪里?

    默认路由应类似于以下示例。

     routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    
                routes.MapRoute(
                    "Default", // Route name
                    "{controller}/{action}/{*id}", // URL with parameters
                    new {controller = "Home", action = "Index", id = UrlParameter.Optional} // Parameter defaults
                    );
    

    还可以尝试删除第一条路线中的 /Submission/ 部分。 关于自定义路线创建和排序的帖子链接:

    1) Creating Custom Routes (C#)

    2) Custom routing for ASP .NET MVC

    3)official source from asp.net mvc

    【讨论】:

    • 我的两条路线介于忽略和您发布的默认路线之间,应该提到这一点。我只希望会议控制器处理这两个请求。此外,链接应该看起来像 /Conference/confID/Submission/subID 或 /Conference/confID。链接正在工作,我只想要一个从 /conf/confid/sub/subid 到 /conf/confid 的“后退”按钮
    • 如前所述,尝试重新排列路线,这肯定会有所帮助。另请查看我的答案中的自定义路线链接,这将有所帮助。
    • 在重新排序我的 actionLink 时会生成以下链接 /Conference/testconf/Show?submission=firstSub (因为现在第一个匹配)。关于您的链接,我已经创建了自定义路由,我现在遇到的主要问题是从子路由到主路由。我还在我的问题中编辑了我的其他路线映射。
    【解决方案2】:

    有时搜索 30 分钟是不够的,你必须搜索 2 小时...

    ASP.NET MVC 2 RC2 Routing - How to clear low-level values when using ActionLink to refer to a higher level?

    Routlink 或删除约束中的值。 对我来说,Routelink 可以胜任。

    虽然谢谢

    埃柳苏波夫和阿列克谢

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-08
      • 1970-01-01
      • 1970-01-01
      • 2017-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-16
      相关资源
      最近更新 更多