2

我需要知道如何创建一个下拉列表来表示“类别”表中的所有类别。

我已经使用这个 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()从模型中制作一个非常好的下拉列表。:|

加:

我可以SelectList像这样从查询“Q”中生成一个:

var category_list = new SelectList(Q, "CAT_ID", "CAT_Name");

我不知道如何从一个简单的创建下拉列表(不使用ViewBag传递category_list给视图)SelectList:|

我搜索了尽可能多的博客和网站。但是他们没有解决我的问题。我只是越来越糊涂了!

那么有人可以帮忙吗?:/

4

1 回答 1

2

要使用 DropDownListFor,您要么必须有一个具有 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# 编写代码,因此我不能保证语法完全正确。

于 2012-08-01T12:22:06.030 回答