所以我试图建立一个简单的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指令或汇编参考?)
错误。现在这对我有意义,因为如果我的模型是一个列表,我想我无法访问模型类属性。我做错了什么,或者我应该用另一种方式传递数据? 感谢
答案 0 :(得分:0)
当你说&#34时我没有得到你的问题但问题是我如何将数据发送到行动结果?&#34;但是,尽管我可以从你的问题中理解,但似乎你想要迭代模型,这是一个“预订”的列表。 MVC视图中的对象。 Controller已将该列表作为模型传递给您的视图,然后您希望基于列表中的元素创建一些UI元素。以下是如何做到这一点:
Cursor.lockState = CursorLockMode.None;
要回答您的其他问题,从控制器到视图传递模型(这是一个列表)的方式绝对没有错误,但是当它可用时,您尝试访问列表本身的author属性列表元素。希望这有帮助!