LINQ в методе для использования в _Layout.cshtml - PullRequest
0 голосов
/ 01 октября 2011

Я просто пытаюсь извлечь некоторые данные из базы данных и отобразить их в файле _Layouts.cshtml. И я хочу сделать это с помощью метода в папке моделей, верно ??

Мой следующий скрипт здесь работает, но это не красиво, посмотрите.

Вот моя модель:

namespace MvcBreakingNews.Models
{
public class ListCategories
    {
        public IList<string> arrTest() {
            IList<string> myList = new List<string>();
            DataClassesDataContext dt = new DataClassesDataContext();

            var q = from c in dt.categories select c;
            foreach (var item in q)
            {
                myList.Add(item.category1.ToString());
            }
                return myList;
            }
        }
    }
}

А вот мой _Layout.cshtml

@using MvcBreakingNews.Models
...

@{
   ListCategories objC = new ListCategories();

   foreach (var item in objC.arrTest())
   {
       <li><a href="#">@item</a></li>         
   }
}

Теперь, что я хочу сделать, или то, что я думаю, я хочу сделать. Это избавиться от цикла foreach в моем методе и отправить массив непосредственно в _Layout.cshtml

Как бы я это сделал?

Ответы [ 3 ]

1 голос
/ 01 октября 2011

Вы можете использовать ToList() метод расширения :

public IList<string> arrTest()
{
    DataClassesDataContext dt = new DataClassesDataContext();

    var q = from c in dt.categories
            select c.category1.ToString();

    return q.ToList();
}

Или вы можете вернуть q напрямую, что потребует изменения типа возврата:

public IQueryable<string> arrTest()
{
    DataClassesDataContext dt = new DataClassesDataContext();

    return from c in dt.categories
           select c.category1.ToString();
}
0 голосов
/ 02 октября 2011

Кратчайший способ сделать то же самое с помощью выражения Лембда следующий:

public IList<string> arrTest()
{
    DataClassesDataContext dt = new DataClassesDataContext();

    return dt.categories.select(c=>c.category1.ToString()).ToList();
}
0 голосов
/ 01 октября 2011

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

То, что делает ваш новый BaseController, - это прохождение модели каждый раз.Я надеюсь, что вы поняли.

Вот хороший пример:

Как создать строго типизированную главную страницу с использованием базового контроллера в ASP.NET MVC

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