4

我在 VS 2012 中创建了一个 MVC 4 Web 应用程序。通过 NuGet 下载了 Ext.Net 2。在我的 view/home/index.cshtml 文件中,我尝试输入:

@Html.X().ResourceManager()

当我运行时,我得到以下信息:

CS1061:“System.Web.Mvc.HtmlHelper”不包含“X”的定义,并且找不到接受“System.Web.Mvc.HtmlHelper”类型的第一个参数的扩展方法“X”(您是否缺少使用指令还是程序集引用?)

这是我的 web.config

<?xml version="1.0" encoding="utf-8"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
  <configSections>
    <section name="extnet" type="Ext.Net.GlobalConfig" requirePermission="false" />
  </configSections>
  <connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-MvcApplication3-20121016104640;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-MvcApplication3-20121016104640.mdf" providerName="System.Data.SqlClient" />
  </connectionStrings>
  <appSettings>
    <add key="webpages:Version" value="2.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="PreserveLoginUrl" value="true" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>
  <system.web>
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" />
    <authentication mode="Forms">
      <forms loginUrl="~/Account/Login" timeout="2880" />
    </authentication>
    <pages>
      <namespaces>
        <add namespace="System.Web.Helpers" />
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Optimization" />
        <add namespace="System.Web.Routing" />
        <add namespace="System.Web.WebPages" />
      </namespaces>
      <controls>
        <add tagPrefix="ext" namespace="Ext.Net" assembly="Ext.Net" />
      </controls>
    </pages>
    <httpHandlers>
      <add path="*/ext.axd" verb="*" type="Ext.Net.ResourceHandler" validate="false" />
    </httpHandlers>
    <httpModules>
      <add name="DirectRequestModule" type="Ext.Net.DirectRequestModule, Ext.Net" />
    </httpModules>
  </system.web>
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <handlers>
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
      <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
      <add name="DirectRequestHandler" verb="*" path="*/ext.axd" preCondition="integratedMode" type="Ext.Net.ResourceHandler" />
      <add name="ExtNetHandler" path="*/ext.axd" verb="*" type="Ext.Net.ResourceHandler" />
    </handlers>
    <modules>
      <add name="DirectRequestModule" preCondition="managedHandler" type="Ext.Net.DirectRequestModule, Ext.Net" />
    </modules>
  </system.webServer>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" />
        <bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="4.5.7" />
        <assemblyIdentity name="Ext.Net.Utilities" publicKeyToken="2c34ac34702a3c23" />
        <bindingRedirect oldVersion="0.0.0.0-2.0.0" newVersion="2.0.1" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
  <extnet theme="Gray" />
</configuration>
4

3 回答 3

3
  1. 将 Ext.Net 添加到程序集<system.web>

     <compilation debug="true" targetFramework="4.0">
          <assemblies>
            ....
              <add assembly="Ext.Net"/>
          </assemblies>
     </compilation>
    
  2. 在中添加命名空间<system.web>

    <pages>
      <namespaces>
         ....
        <add namespace="Ext.Net"/>
        <add namespace="Ext.Net.MVC"/>
      </namespaces>
    </pages>
    
  3. 像 geoffrey.mcgill 帖子中一样正确组装绑定

  4. 在 Views 文件夹中的 web.config 中添加命名空间(在<system.web.webPages.razor>部分中)

    <pages pageBaseType="System.Web.Mvc.WebViewPage">
        <namespaces>
           ....
           <add namespace="Ext.Net" />
           <add namespace="Ext.Net.MVC" />
        </namespaces>
     </pages>
    
  5. 在 Views 文件夹的 web.config 中添加 Ext.Net 程序集(在<system.web>部分中)

     <pages ....>
        <controls>
            ....
           <add assembly="Ext.Net" namespace="Ext.Net" tagPrefix="ext" />
        </controls>
     </pages>
    
于 2012-10-19T14:56:25.240 回答
1

您能否确认您在项目中添加了对 Ext.Net.dll 的正确引用?

编辑:我相信你<runtime>里面的节点<system.webserver>是不正确的。应该如下,其中每个 Assembly 被定义为一个单独的<assemblyBinding>.

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
            <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
            <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
        </dependentAssembly>
        <dependentAssembly>
            <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" />
            <bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="4.5.7" />
        </dependentAssembly>
        <dependentAssembly>
            <assemblyIdentity name="Ext.Net.Utilities" publicKeyToken="2c34ac34702a3c23" />
            <bindingRedirect oldVersion="0.0.0.0-2.0.0" newVersion="2.0.1" />
        </dependentAssembly>
        <dependentAssembly>
            <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
            <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
        </dependentAssembly>
        <dependentAssembly>
            <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
            <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
        </dependentAssembly>
    </assemblyBinding>
</runtime>

我相信 NuGet 可能存在缺陷。我们已经看到其他关于 NuGet 将这些程序集配置添加到 on 的报告<dependentAssembly>

如果您对 进行上述更改<runtime>,您的项目应该可以工作。

于 2012-10-16T19:11:43.687 回答
0

请不要使用 Nuget 获取 Ext.Net dll。我相信 Ext.Net 团队不会尽快更新 Nuget 中的 Ext.Net dll。因为我发现版本是 Nuget 是 2.1.1.11828,它没有 Ext。 Net.Mvc 命名空间。但最新发布的版本是 2.1.1.18233,它有 Ext.Net.Mvc 命名空间...

于 2013-01-30T10:13:10.447 回答