【发布时间】:2011-11-22 09:22:14
【问题描述】:
我想包装/拦截 System.Web.Mvc.Html 中提供的 HtmlHelper 扩展方法(TextBox、Hidden 等),以便在 2 个单独的用例中重用相同的部分视图。 部分前:
@model BlogEntry
@Html.TextBoxFor(t => t.Title)
@Html.TextAreaFor(t => t.Body)
@* Etc *@
Partial 的调用者将知道上下文(即是否覆盖或离开 MS imp)。
覆盖的原因多种多样。例如:在 JQuery 模板中使用,在上面的示例中 value 属性的输出将是 "${Title}" 或添加 Html5 元数据。
【问题讨论】:
-
如果您需要这样做,说明您的设计有问题,还有另一种方法可以实现。
-
试图为客户端和服务器模板重复使用相同的 html 标记是不好的设计?
-
不,不是。糟糕的设计是试图拦截对标准 html 助手的调用。
-
我会让 Action 方法教 HtmlHelper 上下文。然后它可以决定渲染什么,你可以使用相同的视图。
-
为什么不创建自己的助手来包装 MS 助手并实现您的自定义逻辑?我真的很喜欢将渲染切换为文字 html 或 jQuery 模板的想法。
标签: asp.net asp.net-mvc asp.net-mvc-3 razor html-helper