gpt4 book ai didi

asp.net-mvc - ASP.NET MVC 是否可以在具有不同模型的多个 View 中使用 ascx 文件

转载 作者:行者123 更新时间:2023-12-04 06:59:41 26 4
gpt4 key购买 nike

我想知道是否可以包装一个 ascx 文件,以便它可以在不同的 View 中使用,而不必将其键入到特定的模型中。

这意味着只要传入相关模型数据,您就可以将一个 ascx 文件用于多个页面。

目前我正在为网站的不同部分复制我的 ascx 文件,但这感觉非常不干。

ps 这是我传入的那种模型。

public class DinnerPage {
public Dinner dinner {get; set;} //main page data
public List<Dinner> Random6Dinners {get; set;} // ascx content
}

问题是,如果我想使用呈现 6 个随机晚餐的 ascx 文件,但对于不同的主页,那么我必须以不同的方式键入它。

基本上,你可以有一个无类型的 ascx 页面(或 View )

谢谢大家。

最佳答案

我相信您要问的是是否可以重用多个 View ,例如单个 View 上的控件?如果是这样,你确实可以。在您的 View 中使用 Html.RenderPartial 操作。这将在您当前的 View 中呈现一个现有的“aspx”页面:

示例:

假设 Model.Dinners 是某种列表/枚举。

晚餐.aspx

<!--html-->

<%foreach(var dinner in Model.Dinners){%>
<% Html.RenderPartial("~/DinnersFolder/Dinner.ascx", new { Dinner = dinner}); %>
<%}%>

<!--html-->

晚餐.aspx
 <%
var dinner = ViewData.Eval("Dinner");
%>
<!--html-->

这样的事情适用于个人晚餐:
 <% Html.RenderPartial("Dinner", Model.Dinner); %> //Dinner being Dinner.ascx

这样您的 ("MyPartialView"/MyPartialView.aspx) 将接受一种类型的晚餐。然后,您可以通过 ViewData.Eval 拉出该 Dinner,并相应地显示您的“Dinner”。

在您的主页中,您可以: 然后在我的 Dinners 中执行类似 foreach Dinner 的操作,渲染 PartialControl。

一个详细的例子:
  • http://highoncoding.com/Articles/638_Understanding_Partial_Views_in_ASP_NET_MVC_Application.aspx

  • 您也可以使用 RenderAction,这具有完全相同的想法。但是,它将发布到您的 Controllers 操作,后者又返回一个 View :
    <% Html.RenderAction(...); %> 

    这是一篇关于两者之间差异的很棒的文章,您应该使用它:
  • http://blogs.intesoft.net/post/2009/02/renderaction-versus-renderpartial-aspnet-mvc.aspx
  • 关于asp.net-mvc - ASP.NET MVC 是否可以在具有不同模型的多个 View 中使用 ascx 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2074203/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com