我有一个 HtmlHelper 的扩展方法:
<%= Html.MyMethod( params )%>
它在 Visual Studio 中工作,但抛出(在运行时):
Compiler Error Message: CS0117: 'System.Web.Mvc.HtmlHelper' does not contain a definition for 'MyMethod'
奇怪的是这确实有效:
<%= HtmlHelperExtensions.MyMethod( Html, params ) %>
为什么我的方法不能作为扩展工作,而是作为普通的静态调用工作?
最佳答案
我在 web.config 中找到了答案——有一节告诉它如何编译嵌入在 HTML 中的 C#:
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp"
extension=".cs"
type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
</compiler>
</compilers>
</system.codedom>
这缺少一个额外的标志,告诉它使用 3.5 编译器技巧,让扩展方法和匿名类型在 HTML 中工作:
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp"
extension=".cs"
type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<providerOption name="CompilerVersion" value="v3.5" />
</compiler>
</compilers>
</system.codedom>
关于asp.net-mvc - 创建我自己的 HtmlHelper 扩展时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/944015/