我想覆盖或创建一个自定义函数来包装在System.Web.Mvc.Html RenderPartialExtensions中找到的RenderPartial共享函数。
我在这里找到了一篇关于这个想法的文章:http://johncoder.com/Post/AdventuresinDebuggingAFriendlierCalltoRenderPartial
<% Html.TryRenderPartial("ClassB", Model.B); %>在上面的示例中,他们创建了一个名为TryRenderPartial的定制子,它执行一些逻辑并在必要时调用RenderPartial。遗憾的是,本文没有给出TryRenderPartial sub本身的代码示例。
我不知道如何创建这个函数,因为RenderPartialExtensions是不可继承的。此外,我不确定如何实际输出html,因为RenderPartial是一个子函数,而不是一个函数,所以我不知道如何真正“返回”html。有什么想法吗?
发布于 2014-09-16 13:01:50
从字面上看,包装RenderPartial很简单。您只需像这样创建一个HtmlHelper扩展(在C#中,我不会说VB):
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
https://stackoverflow.com/questions/25860624
复制相似问题