【问题标题】:Routing in MVC Core 2.0.0 with Tag helper使用标签助手在 MVC Core 2.0.0 中路由
【发布时间】:2017-08-29 20:27:44
【问题描述】:

Mvc Core 2 有一个错误,我们不能使用页面关键字 所以我现在把它改成了 pageid,因为 bug 已经修复,但我有一个新 bug

routes.MapRoute(
                name: null,
                template: "Community/Page{pageID}",
                defaults: new { Controller = "Forum", action = "Home" });
            routes.MapRoute(
                name: "default",
                template: "{controller=Forum}/{action=Home}/{id?}");
            routes.MapRoute(
                name: null,
                template: "",
                defaults: new { controller = "Forum", action = "Home", pageID = 1 });
            routes.MapRoute(name: null, template: "{controller}/{action}/{id?}");

还有我的标签助手

[HtmlAttributeName(DictionaryAttributePrefix = "page-url-")]
  public Dictionary<string, object> pageUrlValues { set; get; }
  public override void Process(TagHelperContext context, TagHelperOutput output)
  {
    pageUrlValues["page"] = i;

我应该得到

网址/社区/Page5

但我得到的是

url/社区/Page1?page=5

这工作正常,但使我的映射无用 如果我将标签助手中的页面更改为 pageID,则页面的 id 现在按预期更新为 page5 / page4 等,但这些页面的内容不会仅更新 page1 的内容显示

【问题讨论】:

    标签: asp.net-mvc asp.net-core-mvc asp.net-core-tag-helpers


    【解决方案1】:

    尝试将 {pageID} 更改为 {page}

    routes.MapRoute(
                    name: null,
                    template: "Community/Page{page}",
                    defaults: new { Controller = "Forum", action = "Home" });
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Forum}/{action=Home}/{id?}");
                routes.MapRoute(
                    name: null,
                    template: "",
                    defaults: new { controller = "Forum", action = "Home", pageID = 1 });
                routes.MapRoute(name: null, template: "{controller}/{action}/{id?}");
    

    【讨论】:

    • 谢谢,但我在帖子中提到,MVC Core 2.0.0 中有一个错误,禁止我们使用 page 关键字,它将在以后的版本中修复。同时我正在寻找一种替代方法来解决它。出于某种原因,只有当我们使用页面时,2.0.0 中的这个错误才会在共享文件夹中寻找视图
    • 保持原路并改成pageUrlValues["pageID"] = i;
    • 我提到当我这样做时,当我点击页面时,这些页面的内容不会更新
    • 由于某种原因它没有将 id 传递给我的控制器
    【解决方案2】:

    原来我忘记更新控制器的参数页面为pageid

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-04
      • 2019-11-07
      • 2019-05-28
      相关资源
      最近更新 更多