3
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Text;
namespace secondMvc.MyControls
{
    public static class CheckBoxList
    {
        public static MvcHtmlString CheckListBox(this HtmlHelper helper, string Name, Dictionary<Int32, string> citiesList, bool IsVertical, string cssClass)
        {
            StringBuilder sb = new StringBuilder();

            sb.Append(string.Format("<div >"));
            foreach (var item in citiesList)
            {


                sb.Append(helper.CheckBox(item.Value, true, new { @class = cssClass, value = item.Key }));
                sb.Append(helper.Label("RadioButtonItems", item.Value));
                sb.Append("&nbsp;");
                if (IsVertical) sb.Append("<br>");

            }
            sb.Append("</div> ");
            return MvcHtmlString.Create(sb.ToString());
        }
    }
}

System.Web.Mvc.HtmlHelper' does not contain a definition forCheckBox and no extension method'CheckBox' accepting a first argument of type'System.Web.Mvc.HtmlHelper'` が見つかりました (using ディレクティブまたはアセンブリ参照がありませんか?)

私はこのようにweb.configを変更します:

<configuration>

    <appSettings>

    </appSettings>

    <connectionStrings>

    </connectionStrings>
  <pages>
    <namespaces>

      <add namespace="secondMvc.MyControls"/>
    </namespaces>
  </pages>

  <system.web>
    <compilation>
      <assemblies>
      <add assembly="secondMvc.MyControls" />
      </assemblies>
    </compilation>
  </system.web>
</configuration>

しかし、私は同じエラーがあります。何か案が?

4

1 に答える 1

13

静的クラスusing System.Web.Mvc.Htmlを含むファイルに追加します。などの拡張メソッドが定義されているのはCheckBoxList、この名前空間内です。C# コードをコンパイルするとき、名前空間セクションは完全に無視されますCheckBoxweb.configそれらはビューによって使用されます。また、Razor ビューは~/Views/web.configではなくファイルを使用することに注意してください。そのため、カスタム拡張メソッドをビューで解決する場合は、正しい web.config に名前空間を~/web.config追加したことを確認してください。secondMvc.MyControls

于 2012-06-17T17:24:40.307 に答える