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(" ");
if (IsVertical) sb.Append("<br>");
}
sb.Append("</div> ");
return MvcHtmlString.Create(sb.ToString());
}
}
}
System.Web.Mvc.HtmlHelper
'does not contain a definition for
CheckBox and no extension method
'CheckBox'accepting a first argument of type
'System.Web.Mvc.HtmlHelper'`可以找到(你是否错过了使用指令或装配参考?)
我像这样更改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>
但我有同样的错误。 任何想法?
答案 0 :(得分:12)
将using System.Web.Mvc.Html
添加到包含CheckBoxList
静态类的文件中。在此命名空间内部定义了CheckBox
等扩展方法。编译C#代码时,web.config
名称空间部分被完全忽略。它们被视图使用。请注意,Razor视图使用的是~/Views/web.config
文件,而不是~/web.config
,因此如果您希望自定义扩展方法得到解析,请确保已将secondMvc.MyControls
命名空间添加到正确的web.config中在观点中。