我刚刚读过这篇博文 http://weblogs.asp.net/imranbaloch/archive/2010/11/12/razor-template-in-asp-net-mvc-3.aspx on 剃刀模板在 ASP.NET MVC 3 中。
简单地说,我就是不明白!
也就是说,我不明白为什么我们需要这个(相当)复杂的代码来实现在我看来可以更容易(并且更整洁)完成的事情@RenderPartial
?
这是我不喜欢的:
- 模板存储为
Func<T,HelperResult>
代表?
- 该模板委托保留在控制器 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(使用前将#替换为@)