C# 如何更改下拉列表内容
我正在尝试在ASP.NET MVC中进行内容下拉筛选。我希望下拉列表显示三个毕业状态(毕业、通过、失败),当我选择一个时,它将只显示所选状态的学生 下面是我现在看到的屏幕截图: 控制器: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
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"})