代码之家  ›  专栏  ›  技术社区  ›  caltuntas

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

  •  1
  • caltuntas  · 技术社区  · 15 年前

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

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

    • 明细表 --->仅以HTML表格格式显示书籍标题、作者、页数
      格式

    所以我有两个视图页面books.aspx,bookdetails.aspx。一个用于普通列表,一个用于详细列表,但是我有一个控制器操作,它从数据库返回图书,并且只能将结果返回到一个页面。

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

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

    2 回复  |  直到 15 年前
        1
  •  1
  •   Ayo    15 年前

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

    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
    <%}%>
    
        2
  •  2
  •   Craig Stuntz    15 年前

    只需传递视图名称:

    return View("Books", bookList);
    

    …或…

    return View("BookDetails", bookList);