Nic*_*ray 9 asp.net-mvc views partial-views
在ASP.Net MVC中,我想根据renderview查询字符串参数呈现不同的局部视图.
因此,为用户提供选择按缩略图或详细信息查看产品的工具.
我可以访问控制器中的所选参数,但我不知道如何或者,如果我应该将它与产品列表一起传递给视图,那么视图可以实现逻辑来决定显示哪个部分视图?
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>
Run Code Online (Sandbox Code Playgroud)
你的观点应该是这样的:
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<Models.MyModel>" %>
Run Code Online (Sandbox Code Playgroud)
然后在MyModel中
暴露财产:
public bool RenderDetailView {get;set;}
Run Code Online (Sandbox Code Playgroud)
在您的控制器操作中:
public ActionResult Products(string id, int? renderview)
{
var products = productRepository.GetProducts(id).ToList();
return View("Products", new MyModel {RenderDetailView = renderview.HasValue});
}
Run Code Online (Sandbox Code Playgroud)
然后在您的视图中,进行如下检查:
<% if (Model.RenderDetailView)
Run Code Online (Sandbox Code Playgroud)
理想情况下,View所需的所有属性或参数或数据都应该是Model的一部分.
我希望它有所帮助.
| 归档时间: |
|
| 查看次数: |
41377 次 |
| 最近记录: |