Расширения Helml Helper не найдены - PullRequest
7 голосов
/ 18 мая 2009

Я использую релизную версию ASP.net MVC, и мне кажется, что я получаю эту ошибку много

'System.Web.Mvc.HtmlHelper' does not contain a definition for 'RenderPartial' and no extension method 'RenderPartial' accepting a first argument of type 'System.Web.Mvc.HtmlHelper' could be found (are you missing a using directive or an assembly reference?)

, что очень странно, так как я могу перейти к System.Web.Mvc.HtmlHelper, и там есть все методы расширения. Еще более странно, что я могу скомпилировать, и все ошибки исчезают, однако, как только я снова начинаю редактирование, они снова появляются. Я в том числе

<%@ Import Namespace="System.Web.Mvc" %>
<%@ Import Namespace="System.Web.Mvc.Html" %>

в моем файле site.master, который я нашел где-то предложенным, но это, похоже, не помогает. Есть идеи? Intelisense также не находит методы расширения.

Ответы [ 3 ]

4 голосов
/ 18 мая 2009

Сначала проверьте, правильно ли вы используете метод RenderPartial:

<% Html.RenderPartial(...); %>

Во-вторых, проверьте ваш web.config содержит:

<system.web>
    <compilation>
        <assemblies>
            <add assembly="System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        </assemblies>
    </compilation>
    <pages>
        <namespaces>
            <add namespace="System.Web.Mvc.Html" />
        </namespaces>
    </pages>
</system.web>
0 голосов
/ 14 января 2010

См. Также: «System.Web.Mvc.HtmlHelper» не содержит определения «RenderPartial» - ASP.Net MVC

Вы можете подумать, что это глупо, но у меня была такая же проблема. У меня было работающее приложение 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 голосов
/ 18 мая 2009

Используете ли вы

<% Html.RenderPartial("~/Views/Project/Projects.ascx", ViewData); %>

или

<%=Html.RenderPartial("~/Views/Project/Projects.ascx", ViewData); %>

он должен быть первым без "=". Я не уверен, что это решит проблему, но я помню, что они что-то изменили таким образом.

...