asp.net-mvc - ASP.NET MVC 3 Razor 模板 VS RenderPartial

标签 asp.net-mvc asp.net-mvc-3 razor asp.net-mvc-templates

我刚读了this blog post Razor 模板 在 ASP.NET MVC 3 中。

简而言之,我就是不明白!

也就是说,我不明白为什么我们需要这个(相当)复杂的代码来实现 IMO 可以通过 @RenderPartial 更轻松(和更整洁)完成的事情?

这是我不喜欢的:

  • 模板存储为 Func<T,HelperResult>代表?
  • 该模板委托(delegate)保存在 Controller ViewData 中(例如 HttpContext.Current.Items)

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

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

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

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

    最佳答案

    好吧,您应该向那篇文章的作者询问他展示这种技术的动机。

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

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

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

    更新 为了更好地说明内联模板如何有用,我写了一篇关于使用它们调用默认代码的部分的博客文章:Optional Razor Sections with Default Content .

    你可以用它来写这样的东西:
    @this.RenderSection("OptionalSection", @<div>Default Content</div>) 
    

    关于asp.net-mvc - ASP.NET MVC 3 Razor 模板 VS RenderPartial,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4383554/

    相关文章:

    c# - 如何构造动态 LINQ to Entities ORDER BY 子句?

    asp.net-mvc - 了解Global.asax中的路由(asp.net-mvc)

    c# - 知道表单在 MVC 3 中是否有验证错误

    c# - DefaultModelBinder 无法反序列化作为 JSON 对象传递给操作的 .NET Dictionary 对象?

    asp.net - 重定向到操作不适用于 ASP.NET core

    asp.net - KendoUI 网格不适用于 JSON

    .net - SignalR 奇怪的重新连接模式

    ajax - 在 MVC 3 中为 AJAX 请求反序列化字典时出现问题(一种开箱即用的经典 ASP.NET Webforms 方法)

    asp.net-mvc - MVC3 一个 View 中的两个局部 View

    asp.net-mvc - Url.Action 不输出 URL