2011-02-27 108 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

相關問題