【问题标题】:How to create a DropDownList from a LINQ query in MVC3?如何从 MVC3 中的 LINQ 查询创建 DropDownList?
【发布时间】:2012-08-01 12:01:01
【问题描述】:

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

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

加:

我可以像这样从查询“Q”中创建一个SelectList

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

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

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

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

【问题讨论】:

标签: asp.net-mvc-3 linq selectlist html.dropdownlistfor


【解决方案1】:

要使用 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# 编写代码,因此我无法保证语法完全正确。

【讨论】:

  • 它在 [httppost] actionresult 中返回错误,但是...说模型为空!!
  • 您是否在@Html.DropDownListFor 和提交按钮周围使用@Using Html.BeginForm
  • 是的,我正在使用@Using.BeginForm!
  • 这是 OP 的第一篇文章。如果可以的话,我怀疑他会投票赞成答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-18
相关资源
最近更新 更多