我只是尝试从数据库中检索一些数据,并将其显示在_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
我该怎么做?
答案 0 :(得分:1)
您可以使用ToList()
extension method:
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();
}
答案 1 :(得分:0)
实现此目的的最佳方法是创建BaseController
并使所有控制器派生自该BaseController。
您的新BaseController
所做的是每次都传递一个模型。我希望你有这个想法。
这是一个很好的例子:
How to create a strongly typed master page using a base controller in ASP.NET MVC
答案 2 :(得分:0)
使用Lambda表达式执行相同操作的最短方法如下。
public IList<string> arrTest()
{
DataClassesDataContext dt = new DataClassesDataContext();
return dt.categories.select(c=>c.category1.ToString()).ToList();
}