在ASP.Net MVC中,我想根据renderview查询字符串参数来渲染不同的局部 View 。
因此,为用户提供了选择按缩略图或按细节查看产品的便利。
我可以访问 Controller 中的选定参数,但是我不知道该怎么做,或者是否应该将其与产品列表一起传递给 View ,以便该 View 可以实现确定显示哪个局部 View 的逻辑?
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>
最佳答案
您的 View 应类似于:
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<Models.MyModel>" %>
然后在MyModel中
公开属性:
public bool RenderDetailView {get;set;}
在您的 Controller Action 中:
public ActionResult Products(string id, int? renderview)
{
var products = productRepository.GetProducts(id).ToList();
return View("Products", new MyModel {RenderDetailView = renderview.HasValue});
}
然后在您的 View 中进行检查,如下所示:
<% if (Model.RenderDetailView)
理想情况下, View 需要呈现的所有属性,参数或数据都应该是模型的一部分。
希望对您有所帮助。
关于asp.net-mvc - ASP.Net MVC将多个参数传递给 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2199440/