gpt4 book ai didi

asp.net-mvc - ASP.NET MVC 中的 UI 组合

转载 作者:行者123 更新时间:2023-12-04 18:00:03 24 4
gpt4 key购买 nike

您将如何在 ASP.NET MVC View 中支持外部可组合部件?

我这是什么意思?想想“每个页面上的登录框”或“iGoogle”。这是需要在每个 Controller / View 外部的某些地方的东西。

一种方法是在 View 中添加组件,如下所示:

<% foreach (var component in GetComponents()) {%>
<%= Html.RenderPartial(component.ViewName, component.ViewData)%>
<%} %>

在上面的示例中,我正在寻找一种很好的方法来让每个组件的 Controller 而不是显示它们的 View 的 Controller 传递 viewname 和 viewdata。您可以建议的任何完全不同的解决方案也会引起人们的兴趣。过滤器、WebForms 等

更新:我将尝试用一个例子来解释我想要解释的内容。我会选择登录功能。

在典型的 webforms 应用程序中,这可能是一个用户控件,它在页面生命周期的加载事件中检索适当的数据并更新一些 UI 控件。单击后,页面将回发,我们可以在同一用户控件中的单击事件中对发布的信息进行操作。

根据我目前对 ASP.NET MVC 风格的理解, Controller 首先接受请求 将检索适当的数据并将其传递给 View ,然后 View 将其传递给登录部分 View 。登录 View 将定义一个表单,其发布操作针对登录 Controller 的登录操作。登录操作使用发布的信息,我们可以选择使用一些漂亮的方案将请求传递给原始 Controller 。

我认为有一种比上述更聪明的方法,不需要我将 Controller 逻辑放在 View /母版页中。

最佳答案

有两种方法可以做到这一点:

一:创建一个BaseController,它总是获取这些组件所需的数据,设置ViewData["loginbox"] = loginBoxData,然后你可以像这样传递它。

<% foreach (var component in GetComponents()) {%>
<%= Html.RenderPartial(component.ViewName, ViewData[component.Name])%>
<%} %>

这种方法的问题在于,您需要有逻辑来说明何时需要获取组件所需的所有数据,以及何时不获取。

二:

您可以从 here 下载一个 MVC Futures DLL。 .

如果您引用它,并记住将其命名空间添加到您的 web.config,那么您应该可以说: Html.RenderAction("blah") - 此方法通过联系 Controller 、启动 View 并返回 HTML 来完成整个行程。

关于asp.net-mvc - ASP.NET MVC 中的 UI 组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/453036/

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