1

将匿名类型传递给像 TextBox 这样的 HtmlHelper 方法时,您会遇到绑定错误(因为匿名类型成员只有内部访问权限),除非您使用 RouteDataDictionary 来提取成员

当我看到(HtmlHelper 扩展)InputExtensions.TextBox 方法接受匿名类型时,我知道它必须在内部进行一些转换,否则它将失败并出现同样的错误。

果然,它调用了 HtmlHelper.AnonymousObjectToHtmlAttributes 方法,其文档试图通过不提及它来淡化问题,而是建议它只是用破折号替换下划线以确保使用有效的属性名称。当然。反正...

我想看看这个转换到底是什么样子,但是当我在 ILSpy 中检查 HtmlHelper 的具有该名称的静态方法时,该方法似乎只是调用了它自己。这里发生了什么?

public static RouteValueDictionary AnonymousObjectToHtmlAttributes(object htmlAttributes)
{
    return HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes);
}
4

1 回答 1

0

System.Web.MVC.HtmlHelper 中的 AnonymousObjectToHtmlAttributes 方法正在调用具有相同名称但来自 System.Web.WebPages.Html.HtmlHelper 的方法。

ILSpy 没有明确说明这一点。我需要悬停类以显示它来自哪里:

在此处输入图像描述

我问了一个类似的问题,在这里得到了回答。

于 2016-05-15T15:36:44.463 回答