在ASP.Net MVC中,我想根據renderview查詢字符串參數呈現不同的局部視圖。ASP.Net MVC將多個參數傳遞給視圖
因此爲用戶提供設施供用戶選擇按縮略圖或細節查看產品。
我有權訪問控制器中的所選參數,但我不知道如何或者如果我應該將此視圖與產品列表一起傳遞給視圖,以便視圖可以實現邏輯以決定將哪個局部視圖顯示?
public ActionResult Products(string id, int? renderview)
{
var products = productRepository.GetProducts(id).ToList();
return View("Products", products);
}
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<MLBWebRole.Models.Product>>" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
Products
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h2>Products</h2>
<p>This is the Products page</p>
<p><a href="?renderview=0">thumbnails</a> <a href="?renderview=1">details</a></p>
<% if (renderview == 1)
{%>
<% Html.RenderPartial("ProductsDetailList"); %>
<% }
else
{ %>
<% Html.RenderPartial("ProductsThumbnailList"); %>
<% } %>
</asp:Content>
也是產品列表也將是爲MyModel的一部分。 – 2010-02-04 12:17:53
嗨尼廷,我開始按照你的答案,我創建了ViewModel方法public ProductsViewModel(bool renderDetailView,列表 productsList){this.RenderDetailView = renderDetailView; this.ProductsList = productsList;}並將其傳遞到Products頁面與返回查看(「產品」,新ProductsViewModel(true,產品));但由於某種原因,如果Model.RenderDetailView行從未被擊中 - 頁面的所有其餘部分都被渲染,但<% %>內的任何代碼都未被擊中。阿蘇我可以通過並看到正在填充ProductsViewModel。有什麼建議麼? –
2010-02-04 13:36:04
你可以請你展示你的視圖和控制器代碼嗎? – 2010-02-04 15:02:03