3

我刚刚将我的 MVC3 应用程序升级到 MVC4 并且在运行时出现错误。(剪下来更好看)

错误 CS0121:以下方法或属性之间的调用不明确:“ MyWebCore.HtmlHelperExtensions.LabelFor<CoreViewModel,string>(System.Web.Mvc.HtmlHelper<CoreViewModel>, System.Linq.Expressions.Expression<System.Func<CoreViewModel,string>>, object)”和
System.Web.Mvc.Html.LabelExtensions.LabelFor<CoreViewModel,string>(System.Web.Mvc.HtmlHelper<CoreViewModel>, System.Linq.Expressions.Expression<System.Func<CoreViewModel,string>>, object)

我有自己的LabelHelperExtensions包含LabelFor方法的类。我的两个 Web.config 文件都引用了 MVC4。如何使用我的扩展方法而不是 MVC 方法?

我的 web.config:add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35

我的观点/web.config:add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc"

4

3 回答 3

1

我有自己的 LabelHelperExtensions 类,其中包含一个 LabelFor 方法。如何使用我的扩展方法而不是 MVC 方法?

不是唯一的选择,但重命名您的方法以避免与已知的扩展方法冲突将是最干净的。您也可以直接调用静态方法(以静态类名开头的方法),但这会破坏使用扩展方法的目的。

于 2013-08-26T13:00:06.203 回答
1

首先,当已经有另一种方法可以做到这一点时,为什么还要尝试覆盖 MVC 的 LabelFor 扩展?

http://www.asp.net/mvc/tutorials/older-versions/views/creating-custom-html-helpers-cs

你可能有正当的理由去做你正在做的事情,我不知道,但我会研究扩展这些助手的支持方式。

于 2013-08-26T13:04:23.380 回答
0

我有许多级联的重写方法,它们反映了LabelExtensions该类的 MVC 版本的结构。我无法将它们全部删除,但我找出了导致问题的原因并将其删除。

于 2013-08-26T14:09:42.087 回答