我是ASP.NET的新手,我遇到了以下问题:
我正在使用此代码更改CheckBox并将标签绑定到它:
@Html.CheckBoxFor(m => m.RememberMe, new { @class = "css-checkbox", id=Html.NameFor(m => m.UserName)})
<label class = "css-checkbox" for="@Html.NameFor(m => m.UserName)"></label>
@Html.LabelFor(m => m.RememberMe)
能够使用CSS中的代码:
input[type=checkbox].css-checkbox {
position:absolute;
z-index:-1000;
left:-1000px;
overflow: hidden;
clip: rect(0 0 0 0);
height:1px;
width:1px;
margin:-1px;
padding:0;
border:0;
}
input[type=checkbox].css-checkbox + label.css-label {
padding-left:55px;
height:50px;
display:inline-block;
line-height:50px;
background-repeat:no-repeat;
background-position: 0 0;
font-size:50px;
vertical-align:middle;
cursor:pointer;
}
input[type=checkbox].css-checkbox:checked + label.css-label {
background-position: 0 -50px;
}
label.css-label {
background-image:url(http://csscheckbox.com/checkboxes/u/csscheckbox_306b54046314f79a72ea1d0abe22fb0e.png);
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
但不幸的是,这个错误出现了:
错误12
System.Web.Mvc.HtmlHelper<MYNAMESPACE.Models.LogOnModel>
不包含NameFor
的定义,并且没有可以找到接受NameFor
类型的第一个参数的扩展方法System.Web.Mvc.HtmlHelper<MYNAMESPACE.Models.LogOnModel>
(您是否错过了使用指令或程序集引用?)*
我添加了这段代码:
namespace MYNAMESPACE
{
public static class HtmlExtensions
{
public static string NameFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression)
{
return htmlHelper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(ExpressionHelper.GetExpressionText(expression));
}
public static string IdFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression)
{
return HtmlHelper.GenerateIdFromName(NameFor(htmlHelper, expression));
}
}
}
这是web.config
<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.Routing" />
<add namespace="System.Web.WebPages"/>
<add namespace="MYNAMESPACE"/>
</namespaces>
</pages>
有谁知道错误一直出现的原因?或者可能有更简单的方法从复选框中删除边框?
答案 0 :(得分:0)
NameFor()
和IdFor()
来自System.Web.Mvc.Html
您不需要在自己的命名空间中定义这些扩展
只需在您的cshtml文件上添加@using System.Web.Mvc.Html;
。