ASP.NET MVC 3 Razor 模板 VS RenderPartial

2024-01-19

我刚刚读过这篇博文 http://weblogs.asp.net/imranbaloch/archive/2010/11/12/razor-template-in-asp-net-mvc-3.aspx on 剃刀模板在 ASP.NET MVC 3 中。

简单地说,我就是不明白!

也就是说,我不明白为什么我们需要这个(相当)复杂的代码来实现在我看来可以更容易(并且更整洁)完成的事情@RenderPartial ?

这是我不喜欢的:

  1. 模板存储为Func<T,HelperResult>代表?
  2. 该模板委托保留在控制器 ViewData 中(例如 HttpContext.Current.Items)

我从该博客中读到的唯一“好处”是模板不需要单独的文件,这意味着您不需要重新编译等。

但我不认为这是一个有效的论点。只要解决方案组织不受影响,额外的文件就可以。

我更喜欢使用@RenderPartial,因为我可以将我的化妆与主视图分开,并且我可以内联(渲染时间)和 jQuery(例如 AJAX 事件)渲染它。

也许我在这里遗漏了一些东西,但是任何人都可以给出一些为什么我们应该选择 Razor 模板而不是 RenderPartial 来创建可重用内容的原因吗?


好吧,您应该询问该文章的作者提出此技术的动机。

它确实说明了 Razor 的可能性。是否应该使用它是另一回事。我个人认为有一些不太复杂的替代技术(我同意你关于存储Func在请求上下文中)。

  • There's @RenderPartial你已经提到过。
  • 您还可以使用@helper语法(作为本地助手或全局助手)
  • 您可以编写一个 html 帮助程序(并使用TagBuilder组装输出)
  • 您可以编写一个子动作
  • 您可以编写一个模板化助手

现在我看看上面的列表,我认为 MVC 可能提供了太多的选择:)

Update为了更好地说明内联模板如何有用,我写了一篇关于使用它们来调用具有默认代码的部分的博客文章:具有默认内容的可选 Razor 部分 http://blogs.msdn.com/b/marcinon/archive/2010/12/08/Optional-Razor-Sections-with-Default-Content.aspx.

你可以用它来写这样的东西:

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

ASP.NET MVC 3 Razor 模板 VS RenderPartial 的相关文章

  • 使用 CodeDOM 将程序集添加到 BuildManager 会导致间歇性错误

    我正在使用 CodeDOM 在运行时创建内存中程序集 如下所示 public Assembly Compile CodeCompileUnit targetUnit string path Path GetDirectoryName new
  • 表单帖子上的 asp.net mvc 编码

    我在我的 asp net mvc 表单 带有文本区域的 nicedit 中使用富文本编辑器 当我在帖子上提交表单时 因为它不是 html 编码的 我收到以下消息 从客户端检测到潜在危险的 Request Form 值 如何对 post 上的
  • 甜甜圈孔缓存 - 排除 MiniProfiler.RenderInincludes

    我有一个 ASP NET MVC 操作 它装饰有OutputCache属性 但问题是 MiniProfiler 输出也被缓存 我想从缓存中排除 MiniProfiler 输出 甜甜圈洞 但我不确定如何排除像 MiniProfiler Ren
  • LINQ to Entities 不支持指定的类型成员“UserName”

    我尝试使用 url 中的 id 参数来显示特定用户的图像 但收到以下错误消息 LINQ to 不支持指定的类型成员 UserName 实体 仅初始值设定项 实体成员和实体导航 支持属性 这是我的操作方法 HttpGet public Act
  • Asp.NET MVC 应用程序中的静态类

    我想知道是否静态类 in an ASP NET MVC应用程序可能是多次初始化 我最初设计了我的应用程序 以便静态组件可以从数据库中获取一些内容并用作缓存 并且我向从构造函数调用的类添加了刷新方法 刷新方法也可通过应用程序的管理部分使用 在
  • 有没有办法将所有内容都包含在 dbcontext 中?

    当查询一个DbContext急切加载时 需要Include Navigation 为了填充导航属性 然而 在某些情况下 我想简单地Include all实体的导航属性 有没有办法做到这一点 或者有办法做到这一点 我假设你可以反思 但我宁愿避
  • 有没有办法关闭 Hangfire 使用 Serilog 进行的日志记录?

    有没有办法关闭 Hangfire 使用 Serilog 进行的日志记录 我们正在使用我们自己的抽象 我不希望在使用 Serilog 时来自 Hangfire 记录器的所有额外噪音 INIT call under web project na
  • 将视图中的 src 属性设置为 MVC3 项目外部的 url

    我正在尝试创建一个应用程序来显示本地存储在网络服务器上的图像 这是我的观点 请注意 条目 是绝对地址 例如 C Images Image1 jpg 但是 当我运行它时 我得到 Not allowed to load local resour
  • 如何在 Html.BeginForm 中使用 @FileUpload.Get Html 并提交文件列表

    FileUpload GetHtml 有一个默认的提交按钮 但我希望在 Html 开始表单中有一个提交按钮 并使用该替换来提交带有更多参数的文件列表 但是 当我这样做时 在 Action 方法中传递的 IEnumerable 始终为 nul
  • 有没有办法将复选框列表绑定到 asp.net mvc 中的模型

    我在这里寻找一种快速简便的方法来在模型中发生回发时绑定复选框列表项的列表 显然现在常见的做法似乎是这样的form GetValues checkboxList 0 Contains true 这看起来很痛苦而且不太安全 有没有一种方法可以绑
  • 在同一父视图上多次使用一个局部视图

    我正在使用 MVC3 剃须刀 我有一个场景 我必须在同一个父视图上多次使用部分视图 我遇到的问题是 当渲染父视图时 它会在这些部分视图中生成相同的输入控件名称和 ID 由于我的部分视图绑定到不同的模型 因此当视图在 保存 上发回时 它会崩溃
  • MVC5 身份验证中“...与主域之间的信任关系失败”

    我有一个 ASP NET MVC5 应用程序not使用 Windows 身份验证 一切都工作正常 直到我尝试在正在开发的域之外运行应用程序并且 无论出于何种原因 得到 The trust relationship between this
  • 需要帮助理解这段代码

    我正在尝试学习单元测试 我正在尝试对我在 asp net mvc 1 0 中制作的一些会员资格内容进行单元测试 我一直在关注一本关于 MVC 的书 我对一些东西感到困惑 希望有人能为我解答 我的框架使用 Nunit 和 Moq 问题一 pu
  • 在 asp.net mvc 3 中使用 Last-Modified 标头和 OutputCacheAttribute 进行客户端缓存

    Edited 我想在客户端缓存图像 并且知道在 mvc 3 中有不同的方法可以做到这一点 如果我错了 请纠正我 1 你可以使用OutputCacheAttribute其工作原理是Expireshttp 标头 但它会回来304 Not Mod
  • 适用于移动应用程序的 REST API 上的 OAuth

    我正在开发移动应用程序的后端 使用 ASP NET MVC 4 Web Api 构建 RESTful API 该应用程序将在 iOS 和 Android 上运行 我的用户将只能使用他们的 Facebook 帐户登录 并且只有登录后 他们才能
  • Html.Display对于十进制格式?

    例如 我有一个十进制值 59625879 00 我想这样显示这个值 59 625 879 or 59625 879 我怎样才能做到这一点 Html DisplayFor x gt x TAll String Format Thanks 装饰
  • 是否有正确的方法将自定义 Javascript 添加到 ASP.NET MVC 5 页面?

    目前 我已将 jQuery 源文件添加到 ASP NET 项目的 Scripts 文件夹中 在 Layout cshtml 页面中 我包含了 Scripts jquery 2 1 1 min js 现在 我可以在我制作的每个页面上包含 jQ
  • 响应不按顺序

    我正在使用 Obout com MVC 控件 并在我的视图之一中包含以下代码 Html Obout new ComboBox Languages Width 175 SelectedIndex int ViewData DefaultLan
  • 如何获取 ASP.NET MVC 中当前的虚拟路径?

    如何从 ASP NET MVC 视图中获取当前路径 URL 如果没有办法将其获取到视图中 那么如何将其获取到控制器中以便将其传递到视图呢 EDIT 我不需要 url 的协议和主机部分 这将为您返回视图中的 url
  • PartialView Action 正在调用自身

    我有 MVC 应用程序 它用于从主视图 ProductMaster 将 ProductAreaGrid 列表显示为 PartialView 并且它将在局部视图内将 CreateProductArea 作为 PartialView 我的 Gr

随机推荐