更改razor asp.net的复选框样式

时间:2016-02-16 12:11:03

标签: html asp.net asp.net-mvc razor

我是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>

有谁知道错误一直出现的原因?或者可能有更简单的方法从复选框中删除边框?

1 个答案:

答案 0 :(得分:0)

NameFor()IdFor()来自System.Web.Mvc.Html 您不需要在自己的命名空间中定义这些扩展 只需在您的cshtml文件上添加@using System.Web.Mvc.Html;