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

标签 asp.net-mvc model-view-controller model

我想知道是否可以包装一个 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 是某种列表/枚举。

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 取出该晚餐,并相应地显示您的“晚餐”。

在您的主页中,您可以:然后执行类似 foreachdinner in mydinners 的操作,呈现 PartialControl。

详细示例:

你也可以使用RenderAction,这有同样的想法。但是,它将发布到您的 Controller 操作,该操作又返回一个 View :

<% Html.RenderAction(...); %> 

这是一篇很棒的文章,介绍了两者之间的区别以及您应该使用的内容:

关于asp.net-mvc - ASP.NET MVC 是否可以在具有不同模型的多个 View 中使用 ascx 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2074203/

相关文章:

.net - 检测到冲突的ASP.NET Web页版本:指定的版本是 “1.0.0.0”,但是bin中的版本是ASP.MET MVC 3中的 “2.0.0.0”

php - 为其他 DBMS 分层 PHP 应用程序

ruby-on-rails - 查看 Rails 模型页面适用于第一个 View ,但不适用于后续 View

node.js - Loopback框架中的模型关系

c# - ASP.NET 家庭 Controller

javascript - 如何使 <td> 可点击

asp.net-mvc - 如何在单个页面中使用两个 AntiForgeryToken 而不使用已弃用的 'Salt' 属性

javascript - 使用 SSL 运行的应用程序在第一次访问时未加载所有脚本/CSS

spring - Spring MVC返回空白页

ruby-on-rails - 有没有办法获取 Rails 应用程序中所有模型的集合?