首页 > 解决方案 > 如何重用局部视图 - 带有局部视图和复杂 Model Core 3.1 的 Razor 页面

问题描述

我有一个相当复杂(并且可能不正确)的 Razor 页面,其中包含一组相当复杂的过滤器。过滤器是使用 Select2、开始和结束日期以及文本搜索的多项选择。这些的任意组合都可以用来过滤分页列表中的数据。如果我通过页面模型并假设部分类将接受相同的页面模型,它工作正常。如果我想与其他页面共享这个部分视图(包含所有过滤器控件),就会出现问题。我将如何通过模型?这里有更多细节..

AllWork.chstml.cs - 包含许多用于过滤器、页面大小等的公共字符串和列表。它还保留选定项目(用于回发和分页)以及分页列表等项目,它真的非常简单,我仅包含项目的片段,而不是 Get 或 Filter,因为这些不是问题。例子...

 public class AllWorkModel : PageModel
    {
        public string NameSort { get; set; }
        public string DateSort { get; set; }
        [BindProperty(SupportsGet = true)]
        public string StatusSort { get; set; }
        public string CurrentFilter { get; set; }
        public List<string> CurrentFilter1 { get; set; }
        [BindProperty]
        public List<string> ToolNumSelected { get; set; }
        public IList<SelectListItem> _ToolNum { get; set; }
    }

在 AllWork.cshtml 文件中,<partial name="_Filters" />我尝试传入一个特定的模型来调用部分,但这对这种情况没有帮助。AllWork.cshtml @model 指令是这样的@model test_CORE.Pages.AllWorkModel

在我当前使用的部分页面 _Filters.cshtml 上@model test_CORE.Pages.AllWorkModel,它运行良好。

我的问题再次是我如何调整它以便部分页面 _Filters.cshtml 可以在其他页面中使用?我需要一种集中式模型类型,但如何?初始页面加载数据来自 SQL 服务器。

标签: asp.net-corepartial-viewsasp.net-core-3.1

解决方案


推荐阅读