asp.net-mvc – ASP.NET MVC中的UI组合
您将如何在ASP.NET MVC视图中支持外部可组合部分?
这是什么意思?想想“每个页面上的登录框”或“iGoogle”.这些东西需要位于每个控制器/视图外部的某些位置. 一种方法是在视图中添加组件,如下所示: <% foreach (var component in GetComponents()) {%> <%= Html.RenderPartial(component.ViewName,component.ViewData)%> <%} %> 在上面的示例中,我正在寻找一种方法,让每个组件的控制器提供viewname和viewdata,而不是显示它们的视图的控制器.您可以建议的任何完全不同的解决方案也会引起关注.过滤器,WebForms等 更新:我会试着用一个例子来解释我想要解决的问题.我会选择登录功能. 在典型的webforms应用程序中,这可以是一个用户控件,它在页面生命周期的load事件中检索适当的数据并更新一些UI控件.点击后页面将回发,我们可以在同一用户控件中的点击事件中对发布的信息进行操作. 从我目前对ASP.NET MVC样式的理解来看,首先接受请求的控制器将检索适当的数据并将其传递给视图,然后视图将其传递给登录部分视图.登录视图将定义一个表单,其后置操作指向登录控制器的登录操作.登录操作使用发布的信息,我们可以选择使用一些漂亮的方案将请求传递给原始控制器. 我假设有一种比上面更聪明的方法,不需要我将控制器逻辑放在视图/母版页中. 解决方法
有两种方法可以做到这一点:
一:创建一个BaseController,始终获取这些组件所需的数据,设置ViewData [“loginbox”] = loginBoxData,然后你可以像这样传递它. <% foreach (var component in GetComponents()) {%> <%= Html.RenderPartial(component.ViewName,ViewData[component.Name])%> <%} %> 关于这种方法的问题在于你需要有逻辑来说明何时将获取组件所需的所有这些数据,何时不去. 二: 有一个MVC Futures DLL,你可以从here下载. 您引用它,并记得将其命名空间添加到您的web.config,然后您应该能够说:Html.RenderAction(“blah”) – 此方法通过联系控制器,启动视图和返回HTML. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- azure – 如何减少Application Insights发送到服务器的跟踪
- asp.net – 创建一个工作线程,并在整个应用程序生命周期内保
- asp.net – 如何删除特定页面中的cookie?
- asp.net-mvc – 使用一组复杂数据类型调用UpdateModel会重置
- 【Asp.Net MVC+EF+三层架构】详解(二)MVC学习
- asp.net-mvc – AutoMapper xUnit:缺少类型映射配置或不支
- 为什么[System.ComponentModel.ToolboxItem(false)]默认来自
- GridView用法详解
- asp.net – SmtpException:服务器不支持安全连接
- asp.net-mvc-3 – Asp.Net MVC 3 – 映射已属于某个区域的单
- asp.net-mvc – 以任何方式配置配置visual studi
- asp.net-mvc-4 – 将项目升级到MVC 5
- ASP.NET控件的命名指南是什么?
- asp.net-core – 对project.json中的依赖项感到困
- asp.net-mvc – “test”服务器中的ASP.NET MVC运
- asp.net-mvc – OAuth 2 Google API刷新令牌为空
- 在IIS / ASP.NET MVC 4中未加载非托管依赖项的64
- 如何使用WCF和自定义ASP.NET成员资格提供程序调试
- 我如何让Fiddler捕获我的MVC应用程序向我的ASP.N
- 再探Circuit Breaker之使用Polly