List <class>不包含'property'的定义

时间:2016-03-22 23:46:46

标签: asp.net-mvc

所以我试图建立一个简单的MVC系统,通过作者和/或标题搜索书籍数据库。我有一个名为Book.cs的模型,带有标题和作者属性。在我的控制器中,我按如下方式制作了一个ActionResult:

public ActionResult Search(string theAuthor, string theTitle)
{
    if (theAuthor == null && theTitle == null)
    {
        ViewBag.title = "Search for a book by author and/or title";
    }
    else
    {
        ViewBag.title = "Results:";
    }
    List<Book> allBooks = db.Books.ToList();
    List<Book> booksFound = new List<Book>();

    foreach (Book theBook in allBooks)
    {
        if (theAuthor != null && theTitle != null)
        {
            if (theBook.author == theAuthor && theBook.title == theTitle) booksFound.Add(theBook);
        }else if (theAuthor == null)
        {
            if (theBook.title == theTitle) booksFound.Add(theBook);
        }else if (theBook == null)
        {
            if (theBook.author == theAuthor) booksFound.Add(theBook);
        }

    }

    return View("Search", booksFound);
}

现在,这会返回一本书籍列表,所以我认为在我的视图中我必须使用List<Book>模型,所以我做了(@model List<Book>)。但问题是我如何将数据发送到动作结果?我尝试使用

@Html.TextBoxFor (x => x.author)

但是这给了

  

'List<Book>'不包含'author'的定义,并且没有扩展方法'author'接受类型为'List<Book>'的第一个参数(您是否缺少using指令或汇编参考?)

错误。现在这对我有意义,因为如果我的模型是一个列表,我想我无法访问模型类属性。我做错了什么,或者我应该用另一种方式传递数据? 感谢

1 个答案:

答案 0 :(得分:0)

当你说&#34时我没有得到你的问题但问题是我如何将数据发送到行动结果?&#34;但是,尽管我可以从你的问题中理解,但似乎你想要迭代模型,这是一个“预订”的列表。 MVC视图中的对象。 Controller已将该列表作为模型传递给您的视图,然后您希望基于列表中的元素创建一些UI元素。以下是如何做到这一点:

Cursor.lockState = CursorLockMode.None;

要回答您的其他问题,从控制器到视图传递模型(这是一个列表)的方式绝对没有错误,但是当它可用时,您尝试访问列表本身的author属性列表元素。希望这有帮助!