创建操作的下拉列表
本文关键字:下拉列表 操作 创建 | 更新日期: 2023-09-27 18:33:26
我在创建操作的视图中创建下拉列表时遇到问题。该视图仅显示学生编号、标题和描述的字段,而不显示计划和类别下拉列表的任何字段。我不确定如何创建选择列表并将其传递给视图。我不知道做对不对。
public class ServiceForm
{
[Required]
[Display(Name="Student Number")]
public int student_number { get; set; }
[Required]
[Display(Name="Program")]
public SelectList program { get; set; }
[Required]
[Display(Name = "Title")]
public string title { get; set; }
[Required]
[Display(Name = "Description")]
public string description { get; set; }
[Required]
[Display(Name = "Category")]
public SelectList category { get; set; }
}
public class Program
{
public int id { get; set; }
public string program_code { get; set; }
public string program_desc { get; set; }
}
public IEnumerable<ProgramList> GetAllPrograms()
{
var s = ds.programs.OrderBy(m => m.program_code);
return AutoMapper.Mapper.Map<IEnumerable<ProgramList>>(s);
}
private ServiceManager m = new ServiceManager();
private ProgramManager pm = new ProgramManager();
[HttpGet]
public ActionResult Create()
{
ServiceForm form = new ServiceForm();
form.program = new SelectList(pm.GetAllPrograms(), "id", "program_code");
List<SelectListItem> cat = new List<SelectListItem>();
cat.Add(new SelectListItem() { Text = "General", Value = "General", Selected = true });
cat.Add(new SelectListItem() { Text = "Grades", Value = "Grades", Selected = false });
cat.Add(new SelectListItem() { Text = "Time Table", Value = "TimeTable", Selected = false });
cat.Add(new SelectListItem() { Text = "Zenit Account", Value = "Zenit", Selected = false });
form.program = new SelectList(cat, cat.ElementAt(0));
return View(form);
}
[HttpPost]
public ActionResult Create(ServiceAdd newService)
{
if (!ModelState.IsValid)
{
var reform = AutoMapper.Mapper.Map<ServiceForm>(newService);
reform.program = new SelectList(pm.GetAllPrograms(), "id", "program_code");
List<SelectListItem> cat = new List<SelectListItem>();
cat.Add(new SelectListItem() { Text = "General", Value = "General", Selected = true });
cat.Add(new SelectListItem() { Text = "Grades", Value = "Grades", Selected = false });
cat.Add(new SelectListItem() { Text = "Time Table", Value = "TimeTable", Selected = false });
cat.Add(new SelectListItem() { Text = "Zenit Account", Value = "Zenit", Selected = false });
reform.program = new SelectList(cat, cat.ElementAt(0));
return View(reform);
}
return RedirectToAction("Create");
}
模型
public class ServiceForm
{
[Required]
[Display(Name="Student Number")]
public int student_number { get; set; }
[Required]
[Display(Name="Program")]
public SelectList Programs { get; set; }
public string SelectedProgram { get; set; }
[Required]
[Display(Name = "Title")]
public string title { get; set; }
[Required]
[Display(Name = "Description")]
public string description { get; set; }
[Required]
[Display(Name = "Category")]
public SelectList Categories{ get; set; }
public string SelectedCategory { get; set; }
}
控制器
[HttpGet]
public ActionResult Create()
{
ServiceForm form = new ServiceForm();
List<SelectListItem> cat = new List<SelectListItem>();
cat.Add(new SelectListItem { Text = "General", Value = "General", Selected = true });
cat.Add(new SelectListItem { Text = "Grades", Value = "Grades", Selected = false });
cat.Add(new SelectListItem { Text = "Time Table", Value = "TimeTable", Selected = false });
cat.Add(new SelectListItem { Text = "Zenit Account", Value = "Zenit", Selected = false });
form.Categories = cat;
//fill Programs property here...
return View(form);
}
视图
@model ServiceForm
@using(Html.BeginForm(...))
{
@Html.LabelFor(m=>m.Programs)
@Html.DropDownFor(x => x.SelectedProgram , Model.Programs)
@Html.LabelFor(m=>m.Categories)
@Html.DropDownFor(x => x.SelectedCategory, Model.Categories)
}
您可以在控制器中执行以下操作:
public ActionResult Create()
{
var data = new ServiceForm();
data.Categories = new SelectList({"1", "category1"}, {"2", "category2"});
return View(data);
}
[HttpPost]
public ActionResult Create(ServiceForm form)
{
// validate the input and save
}
在您的 Razor 视图中,您有如下所示的内容:
@model ServiceForm
@using(Html.BeginForm())
{
@Html.DropDownFor(x => x.SelectedCategory, Model.Categories)
<!-- ... other fields and labels -->
}