方法ASP.NET MVC之间的模糊调用

时间:2010-04-24 23:29:12

标签: asp.net-mvc lambda html-helper

我是ASP.NET MVC的新手(大约3个月),我有以下问题:

我在ClassLibrary中有一个名为'Usuario'的实体类,引用为'Core',当我创建一个强类型视图并添加一个html.textboxfor<>像:

<%= Html.TextBoxFor(u => u.Login) %>

它引发了以下错误:

Error   3   The call is ambiguous between the following methods or properties:
'Microsoft.Web.Mvc.ExpressionInputExtensions.TextBoxFor<Core.Usuario,string>(System.Web.Mvc
.HtmlHelper<Core.Usuario>, 
System.Linq.Expressions.Expression<System.Func<Core.Usuario,string>>)' and 
'System.Web.Mvc.Html.InputExtensions.TextBoxFor<Core.Usuario,string>(System.Web.Mvc.HtmlHel
per<Core.Usuario>,     System.Linq.Expressions.Expression<System.Func<Core.Usuario,string>>)'   
d:\Documents\Visual Studio 
2008\Projects\GuiPereiraMVC2\GuiPereiraMVC2\Views\Gestao\Index.aspx 20  25  

GuiPereiraMVC2

谁知道为什么?

3 个答案:

答案 0 :(得分:2)

当然,简单:)

您最近可能更新了MVC 2的版本。 在您的Web项目中,您可以引用Microsoft.Web.Mvc(MVC Futures程序集)。

它的一些方法已被移动到核心程序集,因此不需要引用Microsoft.Web.Mvc。您现在可以轻松删除它:)

Btw ..有些方法没有被移动,比如Html.Css / Html.Script助手。但如果你没有使用它们 - 你会没事的:) 此外,如果仍需要,可以尝试更新Microsoft.Web.Mvc库。我想他们自正式发布以来就会从Futures库中删除这些方法!

答案 1 :(得分:1)

您的web.config中提到了几个(至少两个)MVC程序集版本。看看那里。

答案 2 :(得分:1)

发现问题是从codeplex下载MVCDiagnostics或者更好地使用Nuget。

http://haacked.com/archive/2010/12/05/asp-net-mvc-diagnostics-using-nuget.aspx

在您的浏览器中运行后,请执行以下操作:http://localhost:61839/MvcDiagnostics.aspx

你会看到红色问题(我看起来像这样): ASP.NET MVC期货装配信息(Microsoft.Web.Mvc.dll)

加载了不匹配或过时的ASP.NET MVC版本和ASP.NET MVC Futures。

ASP.NET MVC的加载版本是:未知版本(3.0.20105.0)  ASP.NET MVC Futures的加载版本是:ASP.NET MVC 2 RTM Futures(2.0.50217.0)  此版本的ASP.NET MVC Futures的下载不可用。一旦该版本的ASP.NET MVC进入RTM,MVC Futures程序集的预发布版本就不再可用。

程序集版本:ASP.NET MVC 2 RTM Futures(2.0.50217.0) 全名:Microsoft.Web.Mvc,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = null 代码库:file:/// C:/dev/20110630_OVR_MVC3/OVR_MVC3/OVR/bin/Microsoft.Web.Mvc.DLL 部署:bin-deployed

相关问题