我需要知道如何创建一个下拉列表来表示“类别”表中的所有类别。
我已经使用此LINQ查询提取了我需要的每个类别的名称和值:
var dbcontext = new LNQ2SQLDataContext();
var Q = from P in dbcontext.Categories
where P.SUB_CAT == null
select P;
我可以将此“Q”传递给我的观点,如下所示: 在控制器中:
return View(Q);
在视图中:
@model IEnumerable<MyAppName.Models.Category>
但我不知道如何使用@html.DropDownListFor()
从模型中制作一个非常好的下拉列表。 :|
PLUS:
我可以从查询“Q”中创建SelectList
,如下所示:
var category_list = new SelectList(Q, "CAT_ID", "CAT_Name");
但是我不知道如何从一个简单的{{1}创建一个下拉列表(不使用ViewBag
将category_list
传递给视图) },或者:|
我搜索了尽可能多的博客和网站。但他们没有解决我的问题。我只是越来越困惑了!
那么有人可以帮忙吗? :/
答案 0 :(得分:2)
要使用DropDownList,您必须拥有一个具有SelectList或数据的模型以生成选择列表,并且具有存储所选下拉列表值的属性或使用ViewBag传递category_list。所以你可以去......
Public Class MyViewModel
{
Public Integer SelectedCategory { get; set; }
Public SelectList Categories { get; set; }
}
Public Class ItemsController : Controller
{
Public ActionResult Index()
{
var dbcontext = new LNQ2SQLDataContext();
var Q = from P in dbcontext.Categories
where P.SUB_CAT == null
select P;
var vm = new MyViewModel();
vm.Categories = new SelectList(Q, "CategoryID", "Name");
return View(vm);
}
[HttpPost()]
Public ActionResult Index(MyViewModel vm)
{
var theSelectedCategory = vm.SelectedCategory;
}
}
视图将是......
@model MyViewModel
@Html.DropDownListFor(model => model.SelectedCategory, Model.Categories, "Select Category")
注意:我通常不用C#编写代码,所以我无法保证语法完全正确。