ASP.Net MVC传递多个参数到一个视图 [英] ASP.Net MVC Passing multiple parameters to a view

查看:347
本文介绍了ASP.Net MVC传递多个参数到一个视图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在ASP.Net MVC,我想渲染视的RenderView查询字符串参数不同的局部视图。

因此​​提供该设施为用户选择由缩略图或细节来查看产品

我有机会获得在控制器中选择的参数,但我不或不知道如何,如果我要通过这个来的看法的产品列表一起这样的观点可以实现的逻辑决定哪些局部视图中显示?

 公众的ActionResult产品(字符串ID,诠释?的RenderView)
{
    变种产品= productRepository.GetProducts(ID).ToList();
    返回视图(产品,产品);
}<%@页标题=LANGUAGE =C#的MasterPageFile =〜/查看/共享/的Site.Master继承=System.Web.Mvc.ViewPage<&IEnumerable的LT; MLBWebRole.Models.Product>>中%GT;< ASP:内容ID =内容1ContentPlaceHolderID =TitleContent=服务器>
    制品
< / ASP:内容>< ASP:内容ID =内容2ContentPlaceHolderID =日程地址搜索Maincontent=服务器>< H2>产品< / H>< P>这是产品页面< / P>&所述p为H.;&下; A HREF = GT的RenderView = 0?;缩略图&下; / A>&放大器; NBSP;&下; A HREF = GT的RenderView = 1?;详细信息及所述; / A>&下; / P>
 如果%(的RenderView == 1);&LT
     {%GT;
    &所述;%Html.RenderPartial(ProductsDetailList); %GT;
<%}
其他
 {%GT;
&所述;%Html.RenderPartial(ProductsThumbnailList); %GT;
  <%}%GT;< / ASP:内容>


解决方案

您视图应该是这样的:

 <%@页面语言=C#的MasterPageFile =〜/查看/共享/的Site.Master继承=System.Web.Mvc.ViewPage< Models.MyModel>  %GT;

然后在为MyModel

揭露属性:

 公共BOOL RenderDetailView {获取;设置;}

在你的控制器动作:

 公众的ActionResult产品(字符串ID,诠释?的RenderView)
{
    变种产品= productRepository.GetProducts(ID).ToList();
    返回视图(产品,新为MyModel {RenderDetailView = renderview.HasValue});
}

然后在您的视图中,检查,如:

 <若%(Model.RenderDetailView)

在理想情况下,所有属性或视图需要以present本身应该是模型的一部分​​参数或数据。

我希望它能帮助。

In ASP.Net MVC I would like to render a different partial view depending on the renderview query string parameter.

Therefore providing the facility for the user to choose to view products by thumbnail or by details.

I have access to the chosen parameter in the controller but I do not know how to or, if I should be passing this to the view along with the products list so the view can implement the logic for deciding which partial view to display?

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>&nbsp;<a href="?renderview=1">details</a></p>


 <% if (renderview == 1)
     {%>
    <% Html.RenderPartial("ProductsDetailList"); %>
<% }
else
 { %>
<% Html.RenderPartial("ProductsThumbnailList"); %> 
  <% } %>

</asp:Content>

解决方案

Your View Should be something like:

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<Models.MyModel>" %>

Then in MyModel

Expose Property:

public bool RenderDetailView {get;set;}

In your controller action:

public ActionResult Products(string id, int? renderview)
{
    var products = productRepository.GetProducts(id).ToList();
    return View("Products", new MyModel {RenderDetailView = renderview.HasValue});
}

Then in your view, make check like:

<% if (Model.RenderDetailView)

Ideally, all the properties or parameters or data which a View needs in order to present itself should be part of Model.

I hope it helps.

这篇关于ASP.Net MVC传递多个参数到一个视图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆