ASP.NET MVC:为什么“ToMvcHtmlString”不公开?
我正在尝试编写自己的小 HTML 帮助器,其行为很像 DropDownListFor
但不会遭受相同的 我以前遇到过的问题。我们先不讨论 DropDownListFor
是否有缺陷——这不是这个问题的目的。
无论如何,MVC 人员将 ToMvcHtmlString
设为内部而不是公开的原因是什么?
I'm trying to write my own little HTML helper which acts a lot like DropDownListFor
but which doesn't suffer from the same problems that I've encountered before. Let's not discuss whether or not DropDownListFor
is flawed—that is not what this question is about.
Anyways, what is the reason that the MVC guys make ToMvcHtmlString
internal and not public?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我想我应该为那些可能正在寻找解决方法并偶然发现这个问题的人发布一个简单的解决方法。
虽然 ToMvcHtmlString 是内部的,但很容易绕过,因为它使用公共方法:
来自 MVC 源代码:
MvcHtmlString.Create 和 TagBuilder.ToString 都是公共的,因此只需替换
为
即可!对我来说效果很好。不知道为什么他们甚至费心去制作一个单独的内部方法。
I thought I'd post an easy workaround for those that might be looking for one and stumble upon this question.
While ToMvcHtmlString is internal, it is pretty easy to bypass as it uses public methods:
From the MVC source:
Both MvcHtmlString.Create and TagBuilder.ToString are public so just replace
with
and you are good to go! Works great for me. Not sure why they even bothered to make a separate internal method.
我的猜测是鼓励您使用 System.Web.HtmlString 相反。但是,是的,我自己也想知道这一点,并且我在自己的助手中编写了一个重复的 ToMvcHtmlString 扩展。
MvcHtmlString 是,IIRC,只是它们的兼容性修复,因此 MVC 2 可以在 .NET 3.5 和 4 上工作 - 但即便如此,在您自己的代码中使用它也会很有用。
My guess is to encourage you to use System.Web.HtmlString instead. But yes, I've wondered this myself and I've written a duplicate ToMvcHtmlString extension in my own helpers.
MvcHtmlString is, IIRC, just their compatibility fix so MVC 2 can work on both .NET 3.5 and 4 - but even then it'd be useful to use in your own code for that.
这能解决您的问题吗?
Does this solve your problem?