将匿名类型传递给像 TextBox 这样的 HtmlHelper 方法时,您会遇到绑定错误(因为匿名类型成员只有内部访问权限),除非您使用 RouteDataDictionary 来提取成员。
当我看到(HtmlHelper 扩展)InputExtensions.TextBox 方法接受匿名类型时,我知道它必须在内部进行一些转换,否则它将失败并出现同样的错误。
果然,它调用了 HtmlHelper.AnonymousObjectToHtmlAttributes 方法,其文档试图通过不提及它来淡化问题,而是建议它只是用破折号替换下划线以确保使用有效的属性名称。当然。反正...
我想看看这个转换到底是什么样子,但是当我在 ILSpy 中检查 HtmlHelper 的具有该名称的静态方法时,该方法似乎只是调用了它自己。这里发生了什么?
public static RouteValueDictionary AnonymousObjectToHtmlAttributes(object htmlAttributes)
{
return HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes);
}