Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.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 mvc 使用实体框架和NUGET页面列表填充MVC应用程序的下拉列表_Asp.net Mvc_Entity Framework_Pagedlist - Fatal编程技术网

Asp.net mvc 使用实体框架和NUGET页面列表填充MVC应用程序的下拉列表

Asp.net mvc 使用实体框架和NUGET页面列表填充MVC应用程序的下拉列表,asp.net-mvc,entity-framework,pagedlist,Asp.net Mvc,Entity Framework,Pagedlist,我需要在使用实体框架的MVC5应用程序中提供两个不同的过滤器(一个通过文本框控件,另一个通过下拉列表)。难以用表中的选定值填充控件。虽然我最初担心多个值(在列表控件中),因为我将一个包含多个值的表合并为一个包含单个项的表,但我还没有超出步骤1。我应该指出,我正在使用分页列表控件,这可能会使事情更加复杂 模型 (相当简单,这里看不到太多) 控制器 使用排序和名称过滤器非常简单 if (searchString != null) { page

我需要在使用实体框架的MVC5应用程序中提供两个不同的过滤器(一个通过文本框控件,另一个通过下拉列表)。难以用表中的选定值填充控件。虽然我最初担心多个值(在列表控件中),因为我将一个包含多个值的表合并为一个包含单个项的表,但我还没有超出步骤1。我应该指出,我正在使用分页列表控件,这可能会使事情更加复杂

模型 (相当简单,这里看不到太多)

控制器

使用排序和名称过滤器非常简单

if (searchString != null)
            {
                page = 1;
            }
            else
            {
                searchString = currentFilter;
            }

            ViewBag.CurrentFilter = searchString;


            var employees = from s in db.tblEmployeeADPs.Include(s => s.tblDepartmentFuncADP)
                            .Where(s => s.Status == "Active")
                            select s;

            if (!String.IsNullOrEmpty(searchString))
            {
                employees = employees.Where(s => s.LastName.Contains(searchString)
                                              || s.FirstName.Contains(searchString));

            }

            if (!String.IsNullOrEmpty(DepartmentFunction))
            {
                employees = employees.Where(s => s.HomeDepartmentDesc == DepartmentFunction);                       

            }

int pageSize = 30;
int pageNumber = (page ?? 1);
return View(employees.ToPagedList(pageNumber, pageSize));
看法

@使用(Html.BeginForm(“Index”、“Employee”、FormMethod.Get))
{

按名称查找:@Html.TextBox(“searchString”,ViewBag.currentFilter为字符串)
XMan筛选器:@Html.DropDownListFor(m=>m.FunctionName,新选择列表(ViewBag.DepartmentFunc,“FunctionName”,“FunctionName”),“--Select One--”)

} @Model.PageCount的@页(Model.PageCountUrl.Action(“索引”), 新{sortOrder=ViewBag.CurrentSort,currentFilter=ViewBag.currentFilter,第页,占位符forVariable})
当我尝试使用m=>m.valuename lambda语法测试集合之外的任何内容时,我得到一个错误:

PagedList.IPagedList'不包含'FunctionName'的定义,并且没有接受'PagedList.IPagedList'类型的第一个参数的扩展方法'FunctionName'可以编辑:

@Html.DropDownListFor(m => m.FunctionName, new SelectList(ViewBag.DepartmentFunc, "FunctionName", "FunctionNAme"), "-- Select One --")
将此行编辑为

@Html.DropDownListFor(model => model.FirstOrDefault().FunctionName, new SelectList(ViewBag.DepartmentFunc, "FunctionName", "FunctionName"), "-- Select One --")      

它应该可以工作。

选择列表中的最后一个参数是
FunctionNAme
。这是正确的吗?是的,这里有轻微的输入错误,因为它应该是FunctionName,因为您显然在模型中声明了
@model IPagedList
,并且dos不包含名为
FunctionName
的属性创建包含属性的视图模型(例如)
string FunctionName
绑定dropdownlist和属性
IPagedList Employees
(然后您可以摆脱所有其他可怕的
ViewBag
属性,并强绑定到您的模型)参考一个示例我将再次进行三重检查,但在调整之后,它抛出了以下错误:“模板只能用于字段访问、属性访问、一维数组索引或单参数自定义索引器表达式。”在您的模型中。我将此引用添加到模型中的两个表(员工和部门功能)。它以前包含在我的元数据类中,因此我可以使用更可读的名称。但是,在我重建项目后,它仍然抛出相同的错误。@ThomasWashington看到了吗
@Html.DropDownListFor(model => model.FirstOrDefault().FunctionName, new SelectList(ViewBag.DepartmentFunc, "FunctionName", "FunctionName"), "-- Select One --")