2012-08-01 2 views
1

Мне нужно знать, как я мог бы создать раскрывающийся список, чтобы представить все категории в моей таблице «Категории».Как создать DropDownList из запроса LINQ в MVC3?

Я уже извлечены имена и значения каждой категории, мне нужно, используя этот 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:

Я мог бы сделать SelectList из запроса "Q", как это:

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

НО Я не знаю, как создать выпадающий список (без используя ViewBag, чтобы пройти category_list к виду) от простого SelectList, либо: |

Я искал столько блогов и сайтов, сколько мог. Но у меня не было решения для моей проблемы. Я только все запутался!

Так может кто-нибудь помочь? :/

+0

[this] (http://stackoverflow.com/questions/5070762/mvc3-razor-html-dropdownlistfor) и [this] (http://stackoverflow.com/questions/3057873/how-to-write- a-simple-html-dropdownlistfor) может быть полезно ... – Yasser

+0

и [this] (http://stackoverflow.com/questions/5098848/help-me-understand-understand-how-to-work-with-dropdownlistfor- in-mvc3? rq = 1) –

ответ

1

Использовать DropDownListДля того, чтобы вы либо имели модель, которая имеет SelectList, либо данные, чтобы сделать список избранных и свойство сохранить выбранное значение выпадающего меню или использовать ViewBag для передачи категории. Таким образом, вы можете пойти с ...

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#, так что я не могу гарантировать синтаксис совершенно прав ,

+0

Спасибо, МОНЛИС! Он работает :) – Ali

+0

Он возвращает ошибку в [httppost] actionresult, хотя ... Говорит, что модель пуста! – Ali

+0

Вы используете '@Using Html.BeginForm' вокруг кнопки' @ Html.DropDownListFor' и отправки? – MHollis

Смежные вопросы