Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 将过滤器添加到中的razor视图。然后包括模型_Asp.net Core_Filtering_Razor Pages - Fatal编程技术网

Asp.net core 将过滤器添加到中的razor视图。然后包括模型

Asp.net core 将过滤器添加到中的razor视图。然后包括模型,asp.net-core,filtering,razor-pages,Asp.net Core,Filtering,Razor Pages,我想为包含客户端和项目的视图添加一个下拉菜单过滤器。我的过滤器适用于单个模型视图(项目),但我不知道如何将其应用于我的OnGet操作,以便在子模型(项目)上过滤结果视图 我已经为项目模型的OnGet操作添加了过滤器代码,但不知道在哪里包含将处理搜索过滤器的变量 Index.cshtml.cs文件(当用户单击搜索按钮时,应使用dsmIQ应用过滤器) [BindProperty] 公共列表ClientVMList{get;set;} //添加了过滤器-启动 公共字符串CurrentFilter{ge

我想为包含客户端和项目的视图添加一个下拉菜单过滤器。我的过滤器适用于单个模型视图(项目),但我不知道如何将其应用于我的OnGet操作,以便在子模型(项目)上过滤结果视图

我已经为项目模型的OnGet操作添加了过滤器代码,但不知道在哪里包含将处理搜索过滤器的变量

Index.cshtml.cs文件(当用户单击搜索按钮时,应使用dsmIQ应用过滤器)

[BindProperty]
公共列表ClientVMList{get;set;}
//添加了过滤器-启动
公共字符串CurrentFilter{get;set;}
//添加了过滤器-结束
//添加了过滤器-字符串搜索字符串
公共异步任务OnGet(字符串搜索字符串)
{
//添加了过滤器-启动
CurrentFilter=searchString;
IQueryable dsmIQ=来自_context.Project中的s
选择s;
如果(!String.IsNullOrEmpty(searchString))
{
dsmIQ=dsmIQ.Where(s=>s.DSM.Contains(searchString));
}
//添加了过滤器-结束
var clientlist=\u context.Client
.Include(c=>c.ClientComments)
.Include(p=>p.Projects)
.然后包括(pc=>pc.ProjectComments).ToList();
ClientVMList=新列表();
foreach(客户端列表中的变量项)
{
ClientVM ClientVM=新ClientVM()
{
Projectlist=新列表(),
};
clientVM.ClientName=item.ClientName;
if(item.ClientComments!=null&&item.ClientComments.Any())
{
clientVM.ClientStatusComment=item.ClientComments.OrderByDescending(cc=>cc.LastUpdateDate).First().ClientStatusComment;
clientVM.ClientRAG=item.ClientComments.OrderByDescending(cc=>cc.LastUpdateDate).First().ClientRAG;
clientVM.ClientStatusCommentId=item.ClientComments.OrderByDescending(cc=>cc.LastUpdateDate).First().Id;
}
其他的
{
clientVM.ClientStatusComment=“无状态注释”;
}
foreach(item.Projects中的var项目项)
{
ProjectVM ProjectVM=新的ProjectVM
{
ProjectPID=projectItem.PID,
ProjectName=projectItem.ProjectName,
ProjectStatusName=projectItem.ProjectStatus,
ForecastOwnerLongName=projectItem.ForecastOwner,
DSMLongName=projectItem.DSM,
};
if(projectItem.ProjectComments!=null&&projectItem.ProjectComments.Any())
{
projectVM.ProjectStatusComment=projectItem.ProjectComments.OrderByDescending(pc=>pc.LastUpdateDate).First().ProjectStatusComment;
projectVM.RAGStatusName=projectItem.ProjectComments.OrderByDescending(pc=>pc.LastUpdateDate).First().ProjectRAG;
projectVM.ProjectStatusCommentId=projectItem.ProjectComments.OrderByDescending(pc=>pc.LastUpdateDate).First().Id;
}
其他的
{
projectVM.ProjectStatusComment=“无状态注释”;
}
clientVM.Projectlist.Add(projectVM);
}
ClientVMList.Add(clientVM);
}
返回页();
单个模型(项目)的工作代码

public IList项目{get;set;}
//添加了过滤器-启动
公共字符串CurrentFilter{get;set;}
//添加了过滤器-结束
//添加了过滤器-字符串搜索字符串
公共异步任务OnGetAsync(字符串搜索字符串)
{
//添加了过滤器-启动
CurrentFilter=searchString;
IQueryable dsmIQ=来自_context.Project中的s
.Include(p=>p.Client)
选择s;
如果(!String.IsNullOrEmpty(searchString))
{
dsmIQ=dsmIQ.Where(s=>s.DSM.Contains(searchString));
}
项目=等待dsmIQ.AsNoTracking().toListSync();
//添加了过滤器-结束
//Project=wait\u context.Project
//.Include(p=>p.Client).ToListAsync();
}
}
}
Index.cshtml页面上的代码:

<form asp-page="./Index" method="get">
    <div class="form-actions no-color">
        <p>
            My projects only:
            <input type="text" name="SearchString" value="@Model.CurrentFilter" />
            <input type="submit" value="Search" class="btn btn-primary" /> |
            <a asp-page="./CommentGroupings/Index">Back to full List</a>
        </p>
    </div>
</form>


仅限我的项目:
|
返回完整列表


“我的视图”按客户列出所有项目以及相关注释。我希望用户能够搜索其名称所在的所有项目(DSM字段)。如何在我的
var clientlist=\u context.Client
include(p=>p.Projects)
中包含来自s的
IQueryable dsmIQ=\u context.Project

您当前的搜索结果和预期结果是什么?代码正在处理单个模型并提供正确的筛选结果。但是,当我想将其应用于包含客户端、ClientComment、Project和ProjectComment模型的分组概览时,根本不会应用过滤器,因为它没有链接到_context.Client查询。我只想将筛选器应用于项目列表中的DSM字段。概述列出了以下模型:*客户端1 |评论*项目1 |评论| DSM*项目2 |评论| DSM*客户端2 |评论*项目1 |评论| DSM*项目2 |评论| DSM您当前的搜索结果和预期结果是什么?代码正在处理单个模型a
        public IList<Project> Project { get;set; }
        //added for filter - start
        public string CurrentFilter { get; set; }
        //added for filter - end

        //added for filter - string searchString
        public async Task OnGetAsync(string searchString)
        {
            //added for filter - start
            CurrentFilter = searchString;
            IQueryable<Project> dsmIQ = from s in _context.Project
            .Include(p => p.Client)
                                        select s;
            if (!String.IsNullOrEmpty(searchString))
            {
                dsmIQ = dsmIQ.Where(s => s.DSM.Contains(searchString));
            }
            Project = await dsmIQ.AsNoTracking().ToListAsync();
            //added for filter - end

            //            Project = await _context.Project
            //               .Include(p => p.Client).ToListAsync();
        }
    }
}

<form asp-page="./Index" method="get">
    <div class="form-actions no-color">
        <p>
            My projects only:
            <input type="text" name="SearchString" value="@Model.CurrentFilter" />
            <input type="submit" value="Search" class="btn btn-primary" /> |
            <a asp-page="./CommentGroupings/Index">Back to full List</a>
        </p>
    </div>
</form>