Kei*_*ith 3 model-view-controller asp.net-mvc extension-methods
我有一个HtmlHelper的扩展方法:
<%= Html.MyMethod( params )%>
Run Code Online (Sandbox Code Playgroud)
它适用于visual studio,但会抛出(在运行时):
编译器错误消息:CS0117:'System.Web.Mvc.HtmlHelper'不包含'MyMethod'的定义
奇怪的是这确实有效:
<%= HtmlHelperExtensions.MyMethod( Html, params ) %>
Run Code Online (Sandbox Code Playgroud)
为什么我的方法不能作为扩展,但作为普通的静态调用呢?
我在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>
Run Code Online (Sandbox Code Playgroud)
这缺少一个额外的标志,告诉它使用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>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
716 次 |
最近记录: |