Можно ли передать анонимный тип моему представлению ASP.NET MVC? - PullRequest
41 голосов
/ 22 октября 2008

Я только начал работать с ASP.NET MVC сейчас, когда он находится в бета-версии. В моем коде я выполняю простой запрос LINQ to SQL, чтобы получить список результатов и передать его на мой взгляд. Такого рода вещи:

var ords = from o in db.Orders
           where o.OrderDate == DateTime.Today
           select o;

return View(ords);

Однако в своем View я понял, что мне нужно будет получить доступ к имени клиента для каждого заказа. Я начал использовать o.Customer.Name, но я вполне уверен, что он выполняет отдельный запрос для каждого заказа (из-за ленивой загрузки LINQ).

Логический способ сократить количество запросов - выбрать имя клиента одновременно. Что-то вроде:

var ords = from o in db.Orders
           from c in db.Customers
           where o.OrderDate == DateTime.Today
               and o.CustomerID == c.CustomerID
           select new { o.OrderID, /* ... */, c.CustomerName };

return View(ords);

За исключением того, что теперь моя переменная "ords" является IEnumerable анонимного типа.

Можно ли объявить ASP.NET MVC View таким образом, чтобы он принимал IEnumerable в качестве данных своего представления, где T определяется тем, что передается из контроллера, или мне нужно будет определить конкретный тип для заполнения из моего запроса?

Ответы [ 11 ]

0 голосов
/ 22 октября 2008

вы можете пройти Объект и использовать отражение, чтобы получить желаемые результаты. Посмотрите на ObjectDumper.cs (включенный в csharpexamples.zip) для примера этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...