【问题标题】:Route system with custom tag helper MVC CORE [duplicate]带有自定义标签助手 MVC CORE 的路由系统 [重复]
【发布时间】:2018-06-15 10:59:56
【问题描述】:

自定义标签助手“分页”

[HtmlTargetElement("div", Attributes = "page-model")]
    public class PageLinkTagHelper : TagHelper
    {
        private IUrlHelperFactory urlHelperFactory;
        public PageLinkTagHelper(IUrlHelperFactory helperFactory)
        {
            urlHelperFactory = helperFactory;
        }

        [ViewContext]
        [HtmlAttributeNotBound]
        public ViewContext ViewContext { get; set; }
        public PagingInfo PageModel { get; set; }
        public string PageRoute { get; set; }
        [HtmlAttributeName(DictionaryAttributePrefix = "page-url-")]
        public Dictionary<string, object> PageUrlValues { get; set; } = new Dictionary<string, object>();
        public bool PageClassesEnabled { get; set; } = false;
        public string PageClass { get; set; }
        public string PageClassNormal { get; set; }
        public string PageClassSelected { get; set; }

        public override void Process(TagHelperContext context, TagHelperOutput output)
        {
            IUrlHelper urlHelper = urlHelperFactory.GetUrlHelper(ViewContext);
            TagBuilder result = new TagBuilder("div");
            for (int i = 1; i <= PageModel.TotalPages; i++)
            {
                TagBuilder tag = new TagBuilder("a");
                tag.Attributes["href"] = urlHelper.RouteUrl(PageRoute, new { page = i });
                PageUrlValues["page"] = i;
                tag.Attributes["href"] = urlHelper.RouteUrl(PageRoute, PageUrlValues);
                if (PageClassesEnabled)
                {
                    tag.AddCssClass(PageClass);
                    tag.AddCssClass(i == PageModel.CurrentPage
                    ? PageClassSelected : PageClassNormal);
                }
                tag.InnerHtml.Append(i.ToString());
                result.InnerHtml.AppendHtml(tag);
            }
            output.Content.AppendHtml(result.InnerHtml);
        }
    }

查看

<div page-model="@Model.PagingInfo" page-route="@(Model.IsSysParamCategory ? RouteUrl.Name.SystemListPagination : RouteUrl.Name.CategoryListPagination)" page-classes-enabled="true" page-class="btn mt-2 mb-2" page-class-normal="btn-secondary" page-class-selected="btn-outline-primary" class="btn-group pull-right m-1"></div>

控制器 - 路线

[Route("Admin/System/[action]/{page:int}", Name = RouteUrl.Name.SystemListPagination)]
[Route("Admin/System/[action]/{page:int}", Name = RouteUrl.Name.CategoryListPagination)]
public ViewResult List(int valueId, bool isSysParamCategory, DeleteCategoryType deletedCategory, SaveCategoryType savedCategory, int page = 1)
{ }

html 是这样生成的:

错误: InvalidOperationException:未找到视图“列表”。搜索了以下位置: /Areas/Admin/Views/Shared/List.cshtml /Views/Shared/List.cshtml

问题与反思

我只是不明白 :) 我正在按名称使用此路由路径:'Admin/System/List/{page:int}''Admin/Category/List/{page:int}',具体取决于逻辑标志,但 MVC 框架是 'Shared' 文件夹中的搜索视图。查看位于:Areas/Admin/Views/CategoryType/List

【问题讨论】:

  • 答案放在答案部分,而不是问题

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


【解决方案1】:

我昨天在这个错误上花了一些时间,现在在 5 分钟内找到解决方案!

solution

我收到此错误是因为单词 Page 在 Asp.net Core 2 中被保留

【讨论】:

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