我是mvc的菜鸟。我正在使用mqc的linq2sql存储库模式 只是做一些测试,以清楚地了解它周围的一切。 我正在尝试从作者表中输出作者。
public class AuthorsRepository : IAuthorRepository
{
private Table<BK_Author> _authorsTable;
public IQueryable<BK_Author> Authors
{
get { return _authorsTable.AsQueryable<BK_Author>(); }
}
控制器中的
public class AuthorsController : Controller
{
private IAuthorRepository _authorRepo;
public AuthorsController()
{
string connectionString = "";
_authorRepo = new AuthorsRepository(connectionString);
}
public ViewResult List()
{
return View(_authorRepo.Authors.ToList());
}
在视图部分
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
<div class="item">
<% foreach (var k in Model)
{ %>
<%: k.Author_Name %>
<%: k.Author_email %>
<%: k.Author_phonenumber %>
<%: k.Author_Website %>
<% }%>
</div>
当我尝试运行它时,我遇到编译器异常
“foreach语句不能对'BK_Author'类型的变量进行操作,因为'BK_Author'不包含'GetEnumerator'的公共定义”
答案 0 :(得分:1)
Page的模型以某种方式设置为BK_Author
而不是AuthorsRepository
的对象。将其设置为AuthorsRepository
并使用其Authors
属性访问作者列表。
答案 1 :(得分:0)
在您的“视图”页面中,您可以简单地继承以下内容:
Inherits="System.Web.Mvc.ViewPage<IEnumerable<Authors>>"
或者在foreach(模型中的变量k)之后,你应该将k作为例如:
的作者Authors author = (Authors)k;
希望这有帮助!!