2011-02-27 117 views
5

我正在运行ASP.NET MVC 3,并且正在查看我的模型的编辑视图。我有一个FullName属性,我想渲染为“全名”。“MVC3中没有重载方法'LabelFor'需要2个参数”

这里的违规线(S):

<div class="display-label"> 
    <%: Html.LabelFor(model => model.FullName, "Full name") %> 
</div> 

现在的智能感知显示的过载存在 - 有两个签名,则采取先只是把两者的表达和表达和第二要显示的字符串。但是当我浏览页面时,我得到了标题异常('没有过载...')。

任何人都有使用这种超载的任何成功,以及对我可能会失踪的任何建议?


更新:我试过重新安装MVC3无济于事。但是我在错误页面上的编译器输出注意到了这一点:

c:\Windows\assembly\GAC_MSIL\System.Web.Mvc\2.0.0.0__31bf3856ad364e35\ 
    System.Web.Mvc.dll: (Location of symbol related to previous error) 

这表明,我认为我使用MVC 2,不MVC 3

我有什么配置错误,或者为什么我的IIS使用MVC 2而不是MVC 3?我怎样才能解决这个问题?

回答

8

如果这是一个MVC 2项目,你应该检查你的web配置。

您可能会引用项目引用中的DLL的正确版本,但在运行时在web配置文件中拉入2.0.0.0 ...?

http://blog.devlpr.net/2010/07/27/upgrading-an-asp-net-mvc-2-project-to-asp-net-mvc-3/

在我MVC3应用程序:

<add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
+0

谢谢,它就像你建议的那样简单。 – 2011-03-07 11:29:35

4

而不是做那事,装饰领域与[DisplayName]属性:

[DisplayName("Full name")] 
public string FullName { get; set; } 

然后你可以使用常规的过载:

<%: Html.LabelFor(model => model.FullName) %> 
+0

我知道这个选项,但是我使用生成的类作为我的模型,这使得这个少比简单;我可以实现这一点,但我的问题是'为什么不重载工作'。 – 2011-02-27 10:56:13

+0

@Kirk - 是的,这很公平。我也争辩说,你不应该绑定到生成的类(我猜L2SQL/EF),但这是另一个讨论:)。也许@tiagoinu是正确的 - 东西没有正确配置 - web.config也许?尝试使用特定于MVC3的其他东西,并确保其正常工作。 – RPM1984 2011-02-27 22:32:18

1

有一个overload采用两个参数。

但你可以尝试

<%: Html.LabelFor(model => model.FullName) %> 

,并在模型

public class ModelClass{ 

.. 
.. 

[DisplayName("Full Name")] 
public string FullName{ 
+0

我知道这个选项,但我使用生成的类作为我的模型;我可以实现这个,但我的问题实际上是'为什么不是超载工作'。 – 2011-02-27 10:55:50

2

你需要确保你在你的项目中引用MVC 3.0。由于这个大会有一个强大的名字,你应该得到它或失败。为此,在Visual Studio中,检查解决方案资源管理器,[Project],引用,单击System.Web.Mvc,并检查属性网格中的'版本'属性。它应该是3.x.

如果您有这个问题,请检查web.config或machine.config,并确保在MVC 2.x上没有强制重定向。为此,在项目的所有Web.config文件中,全局替换MVC版本(将此System.Web.Mvc替换为版本= 2.0.0.0,此版本为System.Web.Mvc,版本为3.0.0.0 )。

最后,您还可以在根web.config使用该代码段力改向2至3:

... 
<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
    <dependentAssembly> 
     <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/> 
     <bindingRedirect oldVersion="2.0.0.0" newVersion="3.0.0.0"/> 
    </dependentAssembly> 
    </assemblyBinding> 
</runtime> 
... 
+0

谢谢 - 这是一个很好的答案。 – 2011-03-07 11:30:06

相关问题