Как получить результаты от запроса LINQ to SQL к частичному представлению? - PullRequest
0 голосов
/ 19 марта 2012

Я пытаюсь получить следующие результаты от метода действия Controler к частичному представлению. Обычно я просто использую модель и ссылку в верхней части страницы. Но я думаю, что «результаты» отличаются, потому что они исходят из LINQ to SQL и не знают, как ссылаться в представлении, поэтому я могу использовать его для перебора результатов для отображения.

     [HttpGet]
    public PartialViewResult SelectUnits()
    {

        var results = (from stats in db.t_harvest      
                       orderby stats.unit_number                     
                       select new
                       {
                           stats.unit_number,   

                       }).Distinct().ToList();


        return PartialView(results);
    }

Ответы [ 2 ]

1 голос
/ 19 марта 2012

Нельзя использовать строго типизированную частичную часть, поскольку список возврата имеет анонимные типы (IE: new { ... }).

Однако, поскольку вы возвращаете только 1 значение, в этом нет необходимости.

var results = (from stats in db.t_harvest      
               orderby stats.unit_number                     
               select stats.unit_number).Distinct().ToList();

return PartialView(results);

Итак, если unit_number - это int, то сделайте модель ваших частичных представлений IEnumerable<int>.

В случае, если вам нужно отправить анонимный тип обратно, сделайте модель ваших частичных представленийвведите dynamic.

Как предупреждение, будьте осторожны с dynamicViewBag, что также dynamic), поскольку синтаксические ошибки (такие как type-o при доступе ксвойство) будет поймано в время выполнения вместо время компиляции .По этой причине я лично предпочитаю строго типизированные взгляды, где это применимо.Существует 3 способа передачи данных на просмотр:

ViewData["SomeName"] = 12345;
ViewBag.SomeName = 12345; // MVC3+
ViewData.Model = 12345; // Same as doing: return PartialView(12345);
0 голосов
/ 19 марта 2012

Это вернет список анонимных объектов, поэтому один из вариантов - получить к ним доступ, используя динамический объект (ViewBag), который уже находится в каждом представлении (если вы используете MVC3, который есть)

Вот хорошая статья о ViewBag и ViewData , где ViewData - это просто еще один способ передать это представлению.

Это грубый и непроверенный, но я считаю, что это должно работать:

Controller.cs

ViewBag.Results = results;
return PartialView();

PartialView

@(foreach(var result in ViewBag.Results)
    {
     result.unit_number.ToString();//This line should print out the HTML
    }
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...