我在ASP.NET MVC 2页面里引用了一个用户控件,代码如下:
    <p>
       <% Html.RenderAction("DrawChart", "Chart", new { viewDataDic = ViewData }); %>
    </p>
结果网站一运行就报错:CS1061: “System.Web.Mvc.HtmlHelper<object>”不包含“RenderAction”的定义,并且找不到可接受类型为“System.Web.Mvc.HtmlHelper<object>”的第一个参数的扩展方法“RenderAction”(是否缺少 using 指令或程序集引用?)求教各位高手,这是怎么回事呀?我怎么才能让Html带上RenderAction方法?

解决方案 »

  1.   

    先看版本,
    然后看看是不是没有引入System.Web.Mvc.Html 命名空间,可以用 @ import 指令,也可以用 pages 配置节
      

  2.   

    刚才在WebConfig里发现了下面内容,  <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
          <dependentAssembly>
            <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
            <bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0"/>
          dependentAssembly>
        </assemblyBinding>
      </runtime>
    是因为v1的原因么?我明明建立的是ASP.NET MVC 2项目。
      

  3.   

    引用了,我在代码里直接输System.Web.Mvc.Html.RenderAction,VS2008的智能感知根本不提示RenderAction方法。
      

  4.   

    WebConfig里有<add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>这应该能证明是ASP.NET MVC 2项目吧。
      

  5.   

    唉,只是输出个字符串而已,又没有比较高级的交互管理功能,你自己不会写一行拼凑html字符串的代码吗?控件的掌握,应该越来越往高处走,怎么越来越低级呢?
      

  6.   


    要输出复杂的html时,子 action 是很好用的,楼主要调用的叫做DrawChart,看名字似乎不简单,所以他才会选择一个独立的 action
      

  7.   

    找到原因了,确实是版本问题。
    电脑安装的是ASP.NET MVC 2的预览版,预览版里没有RenderAction方法。卸掉预览版,装上正式版后,就可以用了。
    谢谢大家。