Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.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
C# 如何更改下拉列表内容_C#_Asp.net Mvc_Razor_Model View Controller - Fatal编程技术网

C# 如何更改下拉列表内容

C# 如何更改下拉列表内容,c#,asp.net-mvc,razor,model-view-controller,C#,Asp.net Mvc,Razor,Model View Controller,我正在尝试在ASP.NET MVC中进行内容下拉筛选。我希望下拉列表显示三个毕业状态(毕业、通过、失败),当我选择一个时,它将只显示所选状态的学生 下面是我现在看到的屏幕截图: 控制器: ViewBag.GraduationStatus = new SelectList(db.Graduated_Students, "Graduated Status"); var graduates = db.Graduated_Students.Where(student => student.Gr

我正在尝试在ASP.NET MVC中进行内容下拉筛选。我希望下拉列表显示三个毕业状态(毕业、通过、失败),当我选择一个时,它将只显示所选状态的学生

下面是我现在看到的屏幕截图:

控制器:

ViewBag.GraduationStatus = new SelectList(db.Graduated_Students, "Graduated Status");

var graduates = db.Graduated_Students.Where(student => student.GraduationStatus != null);
return View(graduates.ToList());
视图:

@using (Html.BeginForm())
{
    <table>
        <tr>
            <th>
                @Html.DropDownList("GraduationStatus", null, htmlAttributes: new { @class = "form-control" })
            </th>
            <th>
                <input type="submit" value="Filter by graduation Status" />
            </th>
        </tr>
    </table>
}
@使用(Html.BeginForm())
{
@DropDownList(“GraduationStatus”,null,htmlAttributes:new{@class=“formcontrol”})
}
型号:

namespace CodeboxxSchoolPortal
{
    using System;
    using System.ComponentModel.DataAnnotations;
    using System.Collections.Generic;

    public partial class Graduated_Students
    {
        public int ID { get; set; }
        public int CohortId { get; set; }
        public string GraduationStatus { get; set; }
        public string Name { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string ContractStatus { get; set; }
        public string DepositStatus { get; set; }
        public Nullable<int> PartnerId { get; set; }
        public string PartnerName { get; set; }


            public List<SelectListItem> GraduationStatusList = new List<SelectListItem>
            {
                 new SelectListItem { Value="Graduated", Text="Graduated" },
                 new SelectListItem { Value ="Pass", Text="Pass" },
                 new SelectListItem { Value ="Failed", Text="Failed" }
            };

        public class SelectListItem
        {
            public string Value { get; set; }
            public string Text { get; set; }
        }

    }
}
namespace CodeboxxSchoolPortal
{
使用制度;
使用System.ComponentModel.DataAnnotations;
使用System.Collections.Generic;
公立部分班毕业学生
{
公共int ID{get;set;}
公共int-CohortId{get;set;}
公共字符串GraduationStatus{get;set;}
公共字符串名称{get;set;}
公共字符串名{get;set;}
公共字符串LastName{get;set;}
公共字符串ContractStatus{get;set;}
公共字符串状态{get;set;}
公共可为空的PartnerId{get;set;}
公共字符串PartnerName{get;set;}
公共列表刻度StatusList=新列表
{
新建SelectListItem{Value=“graded”,Text=“graded”},
新建SelectListItem{Value=“Pass”,Text=“Pass”},
新建SelectListItem{Value=“Failed”,Text=“Failed”}
};
公共类SelectListItem
{
公共字符串值{get;set;}
公共字符串文本{get;set;}
}
}
}

这是我认为你应该做的

如果控制器中的
操作
GetStudents
,且下拉列表中的值为字符串(毕业状态),请将其传递给过滤器按钮上的控制器,然后单击

 [HttpPost]
 public ActionResult Documents(string? graduationStatus)
 {
     var graduates = db.Graduated_Students.Where(student => student.GraduationStatus == graduationStatus);
     return View(graduates.ToList());
 }
请注意,
字符串?毕业状态
必须与数据库中的学生类型相同。毕业状态

还要确保
Html.BeginForm()
对控制器执行了正确的操作

编辑:

将下面的行改为

@Html.DropDownList("GraduationStatus", new SelectList(ViewBag.GraduationStatus, "Value Here", "Text Here", null), "- Select -", new { @class = "form-control"})

请看一下这个演示,让我知道它是否满足您的需要:我的示例是否帮助了您?谢谢您的帮助,很抱歉迟到了!目前我正试图让它工作,但由于视图中的错误,它仍然无法工作:'IEnumerable'不包含'GraduationStatus'的定义,并且找不到可访问的扩展方法'GraduationStatus'接受类型为'IEnumerable'的第一个参数(是否缺少using指令或程序集引用?)发生这种情况是因为您发送到视图的模型没有正确绑定到GraduationStatus。如果您看到我的示例,模型值绑定到值,然后使用@DropDownListFor在视图上重新绘制。基本上,我的观点是您必须在控件中绑定SelectList值我已经编辑了我的问题,这样你就可以看到我的模型谢谢你的帮助!!我仍然被卡住了…我应该把这行代码放在哪里?@Html.BeginForm(“GetStudents”,“Controller”,FormMethod.Post,new{@class=“my_form”})谢谢你的帮助!!在你的视图中,你有
@using(Html.BeginForm())
这是我替换行的地方,但现在在我的索引中,下拉过滤器中没有显示任何内容…感谢您的帮助!非常确定我的问题在这行…@Html.DropDownList(“GraduationStatus”,null,htmlAttributes:new{@class=“form control”})
@Html.DropDownList("GraduationStatus", new SelectList(ViewBag.GraduationStatus, "Value Here", "Text Here", null), "- Select -", new { @class = "form-control"})