ASP>net MVC 可重用部分

2024-03-18

在 winforms 和 ASP.net 中使用 .net 几年后,我现在开始进入 MVC(我知道有点晚了)。对我来说,一个主要的困惑是可重用“组件”的概念,类似于网络表单中用户控件的概念。

例如,我希望在我的网站的会员区域内有许多“小部件”,其中之一是登录用户帐户管理器的详细信息。我可以将其创建为部分内容,但是当页面加载时,需要将数据作为 ViewModel / View Data 的一部分传入。我想在许多不同的部分中使用这个小部件,这意味着我需要编写代码将数据传递到许多不同的控制器中。这似乎违反了 DRY 原则,还是我在这里遗漏了一些东西?理想情况下,我希望所有内容都封装在 1 个部分中,然后可以在任何页面中使用。


您可以采取三种方式:

1)对于没有太多逻辑的简单控件,您可以为控件创建自定义视图模型的新实例: Html.RenderPartial("YourControl", new YourControlViewModel () { Param1="value1", Param2 = Model.AnotherValue });

2)如果你需要一些后端逻辑的控制,你可以使用 Html.RenderAction("ActionName", "SomeControllerName", RouteValuesDictionary); 它将调用标准控制器操作,使用视图,并将结果输出插入回页面。您可以将 [ChildActionOnly] 属性添加到控制器方法,以确保该方法只能从 Html.RenderPartial 中使用。它稍微违反了 MVC 原则(视图不应调用控制器),但它对于小部件来说非常有用,并且在 Ruby on Rails 世界中使用它没有太多问题。您可以查看精彩的文章Haacked http://haacked.com/archive/2009/11/18/aspnetmvc2-render-action.aspx

3) 为自定义日期格式、计算等任务创建自定义 html 帮助器。

对于你的情况,我会选择第二个。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP>net MVC 可重用部分 的相关文章

  • MVC 应用程序调试时出错:视图状态 MAC 验证失败

    现在开始表单 第一次 当我开始调试 MVC 应用程序时 我收到此错误 视图状态 MAC 验证失败 如果 该应用程序由 Web 托管 农场或集群 确保 配置指定 相同的validationKey和validation 算法 无法使用自动生成
  • 为 MVC2 AsyncController 构建单元测试

    我正在考虑将我的一些 MVC 控制器重写为异步控制器 我对这些控制器进行了工作单元测试 但我试图了解如何在异步控制器环境中维护它们 例如 目前我有这样的操作 public ContentResult Transaction do stuff
  • 如何在页脚中显示生成页面所需的持续时间?

    在调试构建期间 我想显示服务器端在页面页脚中生成页面所需的持续时间 例如 如果一个页面在服务器端花费 250 毫秒 我希望在调试版本中显示在页脚中 如何在 ASP NET MVC 项目中实现这一目标 将其添加到母版页的页脚中 Page re
  • EF4:如何使用通用存储库模式?

    我正在尝试通过使用可以子类化的通用存储库来简化现有的存储库 问题是我不知道如何编写一些基类方法 我目前有 public interface IRepository
  • 通用类型的 ASP.NET MVC 显示模板

    我正在尝试使用模型 ListModel 作为通用列表模型 我想在页面输入 Html DisplayForModel 但是 MVC 无法正确找到模板文件 ListModel cshtml 对于通用模型来说 它的工作方式必须有所不同 我应该如何
  • IE8 中 IIS7.5 中的 ASP.NET MVC2 的会话不粘连

    我们有一个 ASP NET MVC2 Web 应用程序 由于超出本问题范围的原因 我们决定在应用程序中使用经典会话状态 其中实现了与会话相关的以下功能 global asax 中的 Session Start 事件处理程序在会话中存储变量
  • 如何实现历史版本控制?

    我们正处于在 SQL 2008 R2 上构建大型 C MVC2 应用程序 我们还采用 Sharp 架构和 Nhibernate 作为生态系统的一部分 的早期阶段 其中一个要求是在给定的时间内可以访问所有数据库行版本 历史 我们尝试过类似以下
  • PostAuthenticateRequest 多次触发

    我有 Forms 身份验证 需要将自定义对象存储在 HttpContext Current User 和 Thread CurrentPrincipal 中 为此 我监听 PostAuthenticateRequest 事件 然后从数据库读
  • 在 MVC 应用程序中将实体框架数据模型放在哪里?

    让我们考虑默认的 ASP NET MVC 应用程序文件夹结构 它看起来像这样 App data Content Controllers HomeController cs Models AccountModels cs Scripts Vi
  • MVC2 中 Html.Partial(view, model) 和 Html.RenderPartial(view,model) 之间有什么区别(如果有)?

    当然 除了它返回的类型以及您以不同方式调用它的事实之外 如果它们不同 为什么要调用其中一个而不是另一个 定义 Type System Web Mvc Html RenderPartialExtensions Assembly System
  • 在 Accordion menu.js 文件中放置图标而不是“+”或“-”

    我正在制作手风琴菜单 我刚刚找到这个链接http jsfiddle net zM5Vj http jsfiddle net zM5Vj 和我做的手风琴菜单几乎相似 代码中 有 if this text this text else acco
  • Asp.net mvc 表单发布和分页

    我有一个操作方法 搜索 在发布表单时调用该方法 根据表单的发布值 可能有数千个搜索结果 我想逐页显示搜索视图 但如何知道第一次发布的表单值是什么 这样我就可以通过传递页面参数来调用搜索视图 最好的方法是接受系统的无状态性 每次渲染视图时 请
  • 如何使用 jquery 禁用列表框中的多重选择?或者JavaScript?

    我的页面中有一个列表框 td 我需要禁止从列表框中选择多个项目吗 我正在做一些事情 比如选择一个项目 然后单击 删除 按钮 我的页面会从列表框中删除一项 但是如果我选择多个项目 则会抛出一条错误消息 任何人都可以帮我解决如何停用或禁用列表框
  • MVC 操作被调用两次

    我有一个MVC Action Method如果请求需要时间才能完成 则会被点击两次 在检查 chrome 控制台网络日志和 fiddler 时 该请求仅从 JS 发送一次 在下图中 我面临这个问题Approach 1 但是 如果我这样做的话
  • knockout.js 将表单加载到 viewModel 中

    我目前正在成功使用 knockout js 来处理应用程序中的所有数据绑定 但是 在每个页面加载时 在我的 document ready 中 我正在执行初始异步数据加载 如下所示 document ready getData 但是 是否可以
  • .NET MVC:调用 RedirectToAction 传递模型?

    我有一个观点List aspx与班级绑定的Kindergarten 在控制器中 public ActionResult List int Id Kindergarten k from k1 in kindergartensRepositor
  • asp.net mvc 镜像路径和虚拟目录

    我知道这必须是重复的 但我一直在翻阅大量有关此的信息 但无法使其发挥作用 我正在尝试让一个网站在客户端的服务器上运行 并且他们将该网站安装在虚拟目录中 我本地没有这个设置 所以我在这里盲目飞行 我正在尝试建立一条通往图像的路径 用于 Fac
  • 视图“~/Views/Login/Login.aspx”必须派生自 ViewPage、ViewPage、ViewUserControl 或 ViewUserControl

    因此 我在 ASP NET mvc2 解决方案上遇到此错误 该解决方案曾经工作正常 我必须安装 Visual Studio 2012 但磁盘空间不足 因此必须手动卸载一些 Visual Studio 2010 功能 但目前看来并非完全必要
  • 如何对我的自定义验证属性进行单元测试

    我有一个自定义的 asp net mvc 类验证属性 我的问题是如何对其进行单元测试 测试类是否具有该属性是一回事 但这实际上并不能测试其中的逻辑 这就是我想测试的 Serializable EligabilityStudentDebtsA
  • 如何在 ASP.NET MVC 中使用 Html.Action() 将参数传递给 Action?

    我一直在使用Html Action ActionName ControllerName 跨控制器调用子操作 而无需在 Views Shared 中拥有视图 这对于显示会话或 cookie 信息等内容非常有效 我不只是访问 cookie 而是

随机推荐

  • Azure Redis 缓存 - GET 调用超时

    我们在 Azure 中有多个 Web 和辅助角色通过 StackExchange Redis 库连接到我们的 Azure Redis 缓存 并且我们经常收到超时 这使得我们的端到端解决方案陷入停滞 其中之一的示例如下 System Time
  • Flutter WebView 位置

    我正在创建该网站的 WebViewhttps nearxt com https nearxt com 它在打开时询问位置 但是当我使用此链接在 flutter 中创建 webview 时 那么它就无法定位 我还在应用程序中定义了位置 但 w
  • 如何在 CSV 文件中写入多行?

    我怎样才能创建一个 csv文件 在这个 csv我想写数据包的信息 这是我的代码 https www tcpdump org sniffex c https www tcpdump org sniffex c我想写入我的文件 csv一些印刷品
  • Prolog 中不带双精度的列表的所有组合

    有没有一种简单的方法可以获取列表的所有组合而无需双精度 没有双打我的意思是也没有彼此的排列 所以不行 a b c and c a b or c b a 因此对于输入 a b c 输出将是 a b c a b a c b c a b c 我只
  • 是否可以在不知道 Firebase 数据库中的两个自动生成的键内获取值?

    我在每个自动生成的键下添加了一些值 并添加了与每个键对应的子项 示例学生 然后我添加了自动生成的密钥与这个孩子 学生 和值 现在的问题是我如何从这个序列中获取值 我正在为学生使用模型课程 可以吗 要读取此数据 然后在您的应用程序中处理它 您
  • 如何删除名称以点(“.”)结尾的文件夹?

    我收到了一些由恶意软件创建的文件夹 其名称以点结尾 例如C a or C b etc 我找到了一个可以使用命令删除此类文件夹的解决方案rd q s C a 但如果我调用 win APIRemoveDirectory http msdn mi
  • 第一次加载页面时出现“无法在框架中查看此内容”错误

    我开发了一个搜索表单 托管在我公司的本地服务器 iis net core 网站 中 该网站是托管在另一台服务器 apache wamp 上的 Wordpress 该服务器也在公司内 两者都有不同的公共IP 但两者都托管在同一域的子域下 比如
  • Rails 每个循环每 6 个项目插入标签?

    我有 X 个图像对象 需要在视图中循环遍历 并希望每 6 个对象左右创建一个新的 div 对于画廊 我看过cycle 但它似乎改变了所有其他记录 有谁知道每 6 次向视图中插入代码的方法吗 我可能可以用嵌套循环来做到这一点 但我对这个有点难
  • C++ 输入运算符重载

    我正在尝试重载我创建的 UserLogin 类上的输入运算符 不会引发编译时错误 但也不会设置值 一切都在运行 但 ul 的内容仍然存在 字符串 id 是 sally 登录时间为00 00 注销时间为 00 00 入口点 include
  • 如何使 videojs 标记可滑动或可移动

    我想移动我的markers每当它随着搜索一起滑动时 我希望我的标记准确无误slidable as jqueryui 滑块 问题 我想要我的markers 两者 一样可滑动jqueryui range滑块如以下示例中的视频所示 var pla
  • Retrofit+OkHttp 发送 GET 请求时可以,但发送 POST 时给出 SocketTimetout

    我从 Retrofit 开始 可以成功执行 GET 请求 但是当我尝试执行 POST 或 PUT 请求时 出现 SocketTimeOut 异常 我根据以下内容将 OkHttp 添加到我的 libs 文件夹中这个问题 https stack
  • @JsonInclude(Ininclude.NON_NULL) 未按预期工作

    我已经添加了 JsonInclude Include NON NULL Response 类上的注释 JsonInclude Include NON NULL public class Response JsonProperty priva
  • Nuxt - 将脚本添加到头部和主体

    我正在尝试在我的 Nuxt 应用程序中使用此脚本 但不知道如何操作 在基本的 HTML 文件中 它工作得很好 这是代码
  • Hibernate Envers 修订信息(更改列表)

    我想在我的项目中添加修订更改列表 单击信息图标 例如 Revision X added fieldA entry modified fieladB from B to BB removed fieldC entry 哪个是最好的方法 ps
  • Xcode 连接到 MS SQL 数据库

    我有一个现有数据库已在远程启动并运行MS SQL server 并且我希望能够与该数据库进行通信和交互Xcode 我正在写一份申请OS X in Swift以及应用程序应使用的数据存储在该远程数据库中 问题是我好像找不到Swift可以连接到
  • 如何传递 bquote 的符号字符串以在 ggplot 中求值?

    我在函数中创建的 ggplot 的轴标签有所不同 有些标签有上标 下标 而另一些则没有 例子 m data lt data frame x runif 10 y runif 10 x labs lt c rain mm light W m
  • array_walk 匿名函数

    有没有办法让我用匿名函数来获取这个数组来设置值 url array dog cat fish array walk url function value key url key str replace dog value echo pre
  • Azure CLI 运行命令使用参数调用 RunPowerShellScript

    我一直在尝试在 Azure VM 上运行一个脚本 该脚本需要像这样传递参数 az vm run command invoke g
  • scikit learn:与 GridSearchCV 兼容的自定义分类器

    我已经实现了自己的分类器 现在我想对其运行网格搜索 但出现以下错误 estimator fit X train y train fit params TypeError fit takes 2 positional arguments bu
  • ASP>net MVC 可重用部分

    在 winforms 和 ASP net 中使用 net 几年后 我现在开始进入 MVC 我知道有点晚了 对我来说 一个主要的困惑是可重用 组件 的概念 类似于网络表单中用户控件的概念 例如 我希望在我的网站的会员区域内有许多 小部件 其中