c# - ASP.NET MVC : Why is `ToMvcHtmlString` not public?

标签 c# asp.net-mvc extension-methods html-helper

我正在尝试编写我自己的小 HTML 助手,它的行为很像 DropDownListFor 但它不会受到相同的 problems 的影响。我以前遇到过。我们不讨论 DropDownListFor 是否有缺陷——这不是这个问题的目的。

无论如何,MVC 人员将 ToMvcHtmlString 设为内部而不是公开的原因是什么?

最佳答案

我想我会为那些可能正在寻找解决方法并偶然发现这个问题的人发布一个简单的解决方法。

虽然 ToMvcHtmlString 是内部的,但很容易绕过它,因为它使用公共(public)方法:

来自 MVC 源:

internal MvcHtmlString ToMvcHtmlString(TagRenderMode renderMode) {
    return MvcHtmlString.Create(ToString(renderMode));
}

MvcHtmlString.Create 和 TagBuilder.ToString 都是公开的,所以只需替换

return tagBuilder.ToMvcHtmlString(TagRenderMode.Normal);

return MvcHtmlString.Create(tagBuilder.ToString(TagRenderMode.Normal));

一切顺利!对我很有用。不知道他们为什么还要费心制作一个单独的内部方法。

关于c# - ASP.NET MVC : Why is `ToMvcHtmlString` not public?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3353007/

相关文章:

javascript - 通过 Html.BeginForm 提交激活加载动画

asp.net-mvc - Sql View 的 Fluent Nhibernate 映射

c# - 适用于 IEnumerable<T> 和 IQueryable<T> 的扩展方法?

c# - 为什么 TextBox.Click 事件只能出现在 += 或 -= 的左侧

c# - 终结器和 IDisposable

c# - 如何在不阻塞 UI 线程的情况下使任务超时?

c# - 如何识别在 C# 中的给定方法中读/写了哪些状态变量

javascript - 在 JS 文件中访问 ViewModel (asp.net MVC)

c# - 生成 SelectListItem 列表的 IQueryable 扩展方法

C#:使用 ListView.SelectedItems[0] 后选择不同项目的问题