Jer*_*oyd 4 asp.net asp.net-mvc overloading asp.net-mvc-3
我正在使用ASP.Net MVC 3,已经引用了所有正确的DLL(参见附带的截图),但由于某种原因,我得到了这个编译错误.



这是一个奇怪的事情.我能够重现你的错误.我还能够弄清楚它为什么会发生以及如何绕过它.
为什么会这样
System.Web.Mvc.Html和之间存在命名空间冲突System.Web.WebPages.Html
碰撞的结果是什么
System.Web.Mvc.Html
此命名空间包含方法的定义
LabelExtensions.Label (HtmlHelper, String, String)
正如您将注意到的,这是占据先例并导致问题的命名空间.它只有两个重载.(String)或(String, String).在测试时,这是唯一出现的选项.
如何绕过它
你真正想要的是这个命名空间
System.Web.WebPages.Html
此命名空间包含方法的定义
HtmlHelper.Label (String, String, IDictionary<String, Object>)
您现在可以看到要添加的可用性new { @class = "myClass" }.
创建自己的实例
得到你自己的HtmlHelper,绕过LabelExtension这样的:
剃刀
@{
var h = new System.Web.WebPages.Html.HtmlHelper();
}
Run Code Online (Sandbox Code Playgroud)
ASP
<% var h = new System.Web.WebPages.Html.HtmlHelper(); %>
Run Code Online (Sandbox Code Playgroud)
确保它没有嵌套在剃须刀或<%=块内,因为它会阻止它可用.它需要处于页面的全局级别.
使用正确的标签
现在你可以用这个:
剃刀
@h.Label("firstName", "First Name", new { @class = "control-label" })
ASP
<%= h.Label("firstName", "First Name", new { @class = "control-label" }) %>
| 归档时间: |
|
| 查看次数: |
5434 次 |
| 最近记录: |