首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为Html.RenderPartial创建包装器?

如何为Html.RenderPartial创建包装器?
EN

Stack Overflow用户
提问于 2014-09-16 12:26:31
回答 1查看 837关注 0票数 1

我想覆盖或创建一个自定义函数来包装在System.Web.Mvc.Html RenderPartialExtensions中找到的RenderPartial共享函数。

我在这里找到了一篇关于这个想法的文章:http://johncoder.com/Post/AdventuresinDebuggingAFriendlierCalltoRenderPartial

代码语言:javascript
复制
<% Html.TryRenderPartial("ClassB", Model.B); %>

在上面的示例中,他们创建了一个名为TryRenderPartial的定制子,它执行一些逻辑并在必要时调用RenderPartial。遗憾的是,本文没有给出TryRenderPartial sub本身的代码示例。

我不知道如何创建这个函数,因为RenderPartialExtensions是不可继承的。此外,我不确定如何实际输出html,因为RenderPartial是一个子函数,而不是一个函数,所以我不知道如何真正“返回”html。有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2014-09-16 13:01:50

从字面上看,包装RenderPartial很简单。您只需像这样创建一个HtmlHelper扩展(在C#中,我不会说VB):

代码语言:javascript
复制
public static class MyRenderPartialExtensions
{
    public static void MyRenderPartial(this HtmlHelper htmlHelper, string partialViewName)
    {
        htmlHelper.RenderPartial(partialViewName)
    }
}

您可以为要实现的其他重载添加类似的方法。

然而,很可能你并不是真的想这样做...最有可能的是,您想要做的事情已经可以通过框架公开的方式实现了。

这就是所谓的XY问题,这基本上意味着你有问题X,你已经决定你需要做Y来解决它。然而,你不知道如何做Y解,所以你问的是如何做Y,而不是问如何做你最初的X题。

XY问题很糟糕的原因是,你决定要做的解决方案可能不是正确的解决方案,而你遇到麻烦的原因是因为它不是做事情的正确方法。

坦率地说,我想不出一个包装RenderPartial的好理由,因为您所做的任何事情都很可能以其他方式完成。

为了回应你的其他评论,Html助手不会“返回”任何东西。这就是为什么它们是Sub的原因。视图渲染是如何工作的相当复杂,并且不是一个容易讨论的问题。

HtmlHelpers不是通过继承来工作的,他们使用扩展方法。

http://msdn.microsoft.com/en-us/library/bb384936.aspx

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25860624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档