2009-11-22 152 views
4

我一直試圖在一臺機器上運行ASP.Net MVC 1.0,但不能讓過去這一點。我創建了一個新的MVC項目(C#)。它創建所有文件夾,視圖,控制器,模型等等都很好。然後,當我打F5時,我得到以下內容:「System.Web.Mvc.HtmlHelper」不包含「的RenderPartial」的定義 - ASP.Net MVC

d:\ VSCode2008 \ MVC \ MvcApplication1 \ Views \ Shared \ Site.Master(19):error CS0117:'System.Web.Mvc.HtmlHelper'not包含關於 '的RenderPartial'

這發生在以下行的定義:

httpHandler.ProcessRequest(HttpContext.Current);在Default.aspx.cs

看來當它試圖做一個RenderPartial()來呈現登錄部分。

我已經安裝了.Net框架的3.51版本。我安裝了MVC的1.0版本,並且程序集顯然將RenderPartial()作爲HtmlHelper的擴展方法。

任何人都看過類似的東西嗎?我發現了一些關於beta和RC的類似問題的文章,但是建議的修補程序還沒有woredk。

我很喜歡MVC的理論,但它不讓我玩!

回答

18

只是想排除這裏顯而易見的,但你能保證有這在web.config中的命名空間部分?

<add namespace="System.Web.Mvc.Html"/> 
+0

是的 - 謝謝 - 在web配置(有2個web.configs,一個在項目級別,一個在視圖) –

+0

我需要添加這個使用到這個命名空間,它修復了我的錯誤。 System.Web.Mvc。Html必須包含HtmlHelper類的擴展 – agradl

+0

更具體地說,這可以在system.web/pages/namespaces – garryp

2

根據您的錯誤消息,您正在參考System.Web.Mvc.HtmlHelper。我正在查看Reflector中的System.Web.Mvc dll,它告訴我RenderPartial駐留在命名空間System.Web.Mvc.Html中,而不是System.Web.Mvc.HtmlHelper

+0

下找到,謝謝羅伯特,我看了一下,看到了同樣的東西。我忘了提及當我運行項目(或任何asp.net web項目)時,它會抱怨web.config中的未被複制的部分 - System.Codedom。我想也許我的VS2008需要更新 - 雖然我以爲我安裝了sp1,但它看起來並不像它那樣。 –

+0

嘗試SP1 - 沒有修復。 Renistalled VS2008 - 沒有修復。我認爲在這裏可能是最快的選擇... –

+0

謝謝,羅伯特。真的有幫助 –

5

你可能認爲這是愚蠢的,但我也有同樣的問題。我有一個工作的MVC應用程序,運行1.0.0.0,並突然停止工作,給我同樣的RenderPartial不在定義中。事實證明,當我瘋狂清理我的web.config時,我刪除了這一部分。當我重新添加它時,所有事情都再次奏效。我確信這與在運行時加載類擴展的方式有關。

無論如何,重新添加到我的web.config工作在我的機器上。 ;)

<system.codedom> 
    <compilers> 
     <compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" 
        type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> 
      <providerOption name="CompilerVersion" value="v3.5"/> 
      <providerOption name="WarnAsError" value="false"/> 
     </compiler> 

     <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" warningLevel="4" 
        type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> 
      <providerOption name="CompilerVersion" value="v3.5"/> 
      <providerOption name="OptionInfer" value="true"/> 
      <providerOption name="WarnAsError" value="false"/> 
     </compiler> 
    </compilers> 
</system.codedom> 
+0

啊哈!我只是做了完全相同的事情!衛生署! –

+0

也適合我!謝謝! –

5

既然你在後面的代碼引用它(即Default.aspx.cs),您需要包括在文件的頂部的命名空間。使用System.Web.Mvc.Html

;

是包括的RenderPartial擴展方法的命名空間。

+0

這對我來說,謝謝。 – BjarkeCK

1

另一個可能的問題(具體取決於您的錯誤字符串)是擴展方法是有的,但編譯器無法將您的參數匹配已知的方法參數。我用T4MVC(noob)碰到了這個,忘記在我打電話的動作的名字前加上ActionNames。

相關問題