Asp.net mvc ASP.NET MVC:在不同视图上显示相同的结果

Asp.net mvc ASP.NET MVC:在不同视图上显示相同的结果,asp.net-mvc,Asp.net Mvc,我正在用ASP.NET MVC开发一个学习项目。我有一个页面,列出登录用户的书籍,我想以两种格式显示书籍,如下所示 常规列表-->显示书籍缩略图、标题、页数、作者 详细信息列表-->仅以HTML表格格式显示书名、作者、页数 格式 所以我有两个查看页面Books.aspx,BookDetails.aspx。一个用于普通列表,一个用于详细列表,但我有一个控制器操作,可以从数据库返回书籍,并且只能将结果返回到一个页面 public ActionResult Index() {

我正在用ASP.NET MVC开发一个学习项目。我有一个页面,列出登录用户的书籍,我想以两种格式显示书籍,如下所示

  • 常规列表-->显示书籍缩略图、标题、页数、作者

  • 详细信息列表-->仅以HTML表格格式显示书名、作者、页数
    格式


所以我有两个查看页面Books.aspx,BookDetails.aspx。一个用于普通列表,一个用于详细列表,但我有一个控制器操作,可以从数据库返回书籍,并且只能将结果返回到一个页面

    public ActionResult Index()
    {
        //get books from database
        return View(bookList);
    }

我是否必须包含一个参数并选中参数才能将列表返回到不同的视图,或者是否有更好的方法来执行此操作?如何使用同一控制器动作显示两个视图

研究使用局部视图并为其创建控制器操作

public ActionResult NormalList{
    ViewData["normalList"] = //db retrieval code;
    return View("NormalList");
}

public ActionResult DetailedList{
    ViewData["detailedList"] = //db retrieval code;
    return View("DetailedList");
}
在您的页面中

<%= Html.RenderPartial("NormalList", ViewData)%>


<%= Html.RenderPartial("DetailedList", ViewData)%>

在你的部分

<%foreach(var item in (IEnumerable)ViewData["normalList"]){%>
//blah blah blah
<%}%>

//废话废话

只需传递视图名称:

return View("Books", bookList);
……或者

return View("BookDetails", bookList);

“一个用于普通列表,一个用于详细列表,但我有一个控制器操作,可以从数据库返回书籍,并且只能将结果返回到一个页面。”好的,我可以创建两个控制器操作,一个用于详细信息列表,一个用于普通列表,但我不想在两个位置重复相同的代码创建一个方法来检索书籍数据并从每个操作调用它。。。