Создание анонимных типов объектов и передача в MVC # бритва? - PullRequest
0 голосов
/ 25 сентября 2011

Q1: Какая сокращенная версия лучше?Q2: Как я могу передать анонимные типы моему представлению в mvc3?

    public ViewResult Index3()
    {
        List<T1> ls = new List<T1>();
        ls.Add(new T1 { id = 1, title = "t1", val1 = 1, val2 = 2});
        ls.Add(new T1 {id=2, title="t2", val1=3, val2=4});
        ls.Add(new T1 { id = 3, title = "t3", val1 = 5, val2 = 6});

        return View(ls);
    }

(Q1) Что-то похожее?*

    public ViewResult Index3()
    {                           
        return View(List(new { id = 1, title = "t1", val1 = 1, val2 = 2 }
            new { id = 2, title = "t2", val2 = 3, val2 = 4 }
        );
    }

Затем обратитесь к описанному выше в виде бритвы:

    @model IEnumerable<Some Anonymous or Dynamic Model>

    @item.id
    @item.title
    @item.val1
    ...

Ответы [ 4 ]

1 голос
/ 25 сентября 2011

Может использовать ViewBag для передачи вашего списка в представление.

1 голос
/ 25 сентября 2011

Q1 - вопрос предпочтений. Разницы в производительности нет, поскольку компилятор внутренне создает похожий код.

Q2 невозможно, вы должны создать неанонимный тип, чтобы иметь к нему доступ.

0 голосов
/ 26 сентября 2011

Ни одна из этих опций не будет работать, поскольку анонимные типы внутренние , а виды бритвы скомпилированы в отдельную сборку.

См .: Динамическое представление проблемы с отсутствующим элементом анонимного типа - MVC3

0 голосов
/ 25 сентября 2011
  1. Инициализаторы коллекции пишутся так:

    List<T1> ls = new List<T1> {
        new T1 { id = 1, title = "t1", val1 = 1, val2 = 2 },
        new T1 { id = 2, title = "t2", val1 = 3, val2 = 4 },
        new T1 { id = 3, title = "t3", val1 = 5, val2 = 6 }
    };
    
  2. Создать неявно типизированный массив:

    return View(new [] { new { id = 1, ... }, ... });
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...