Как я могу вернуть объект типа EntityCollection для использования с SelectList в ASP.NET MVC? - PullRequest
0 голосов
/ 13 января 2011

Я сделал расширение DropDownList в ASP.NET MVC HtmlHelper, чтобы оно отображало optgroup. Он работает «отлично», когда вторая коллекция - IList, но я быстро обнаружил, что если это не так, или в моем случае, если это EntityCollection, то происходит сбой, потому что SelectList не может перечислить его. *

Итак, я здесь прошу помощи у любого, кто знает, как я могу обойти эту проблему. Я думал о том, чтобы передать Type того, что представляет собой вторая коллекция, а затем выполнить внутреннее приведение, но это просто не подходит ...

В любом случае, я надеюсь, что кто-то может мне помочь, вот текущий код:

internal IList<GroupListItem> GetListItems() {
    return (from object Item in Items
            select new GroupListItem {
                Children = new SelectList((Eval(Item, this.ChildrenField) as IEnumerable), this.ChildDataValueField, this.ChildDataTextField, this.ChildSelectedValue),
                Label = (Eval(Item, this.LabelField) as string)
            }).ToList();
}

private static object Eval(
    object Container,
    string Expression) {
    object Value = Container;

    if (!String.IsNullOrEmpty(Expression)) {
        Value = DataBinder.Eval(Container, Expression);
    };

    if (Value is IList) {
        return Value;
    };

    return Convert.ToString(Value, CultureInfo.CurrentCulture);
}

1 Ответ

0 голосов
/ 13 января 2011

Рассматривали ли вы использовать IEnumerable вместо IList?

...