2012-04-08 4 views
0

Вот то, что у меня в контроллере:DROPDOWNLIST в MVC

 Category x = new Category(1, "one", 0); 
     Category y = new Category(2, "two", 1); 


     List<Category> cat = new List<Category>(); 
     cat.Add(x); 
     cat.Add(y); 

     ViewData["categories"] = new SelectList(cat, "id", "name"); 

Мой взгляд:

<%= Html.DropDownList("categories")%> 

Но мой класс Категория имеет свойство с именем idParent. Я хочу раскрывающийся быть поля со значениями, как это: ParentName -> CategoryName

public class Category {int idParent, string name, int id} 

Я пытался так:

ViewData["categories"] = new SelectList(cat, "id", "idParent" + "name"); 

, но это не работает. Есть ли у вас какие-либо идеи?

+0

Вы можете использовать строго типизированные виды? – Shyju

+0

@ Шыю Нет, я не знаю. –

+0

Пройдите через мои учебные пособия http://www.asp.net/mvc/tutorials/javascript/working-with-the-dropdownlist-box-and-jquery/using-the-dropdownlist-helper-with-aspnet-mvc http : //blogs.msdn.com/b/rickandy/archive/2012/01/09/cascasding-dropdownlist-in-asp-net-mvc.aspx – RickAndMSFT

ответ

1

Добавить объект в категорию Category, чтобы вернуть нужные значения.

public class Category 
{ 
    int idParent; 
    string name; 
    int id; 

    public Category(int idParent, string name, int id) 
    { 
     this.idParent = idParent; 
     this.name = name; 
     this.id = id; 
    } 

    public string FormattedName 
    { 
     get {return string.format("{0}->{1}", this.idParent, this.name);} 
    } 
} 

Тогда ваш SelectList конструктор становится:

ViewData["categories"] = new SelectList(cat, "id", "FormattedName"); 

Вы, возможно, придется настроить этот код для ваших потребностей, но это должно дать вам идею.