回到目录

说在前

我都是喜欢把问题复杂化,还有总是喜欢把问题简单化,偷懒化,这也需就是一个程序员的追求吧,呵呵。

我不太喜欢重复的东西,当你看到页面上有一个以上相同的代码时,那可以说,你的代码有重构的余地,应该考虑重构了,今天看了以前同事的博客,写了关于DropDownList的用法,如何将集合数据绑定到下拉列表框上,讲的不错,但最后在说checkbox和radiobutton时,我感觉有点重复了,我说的是代码重复了,还有就是代码复杂化了,就是说,我再使用集合来产生checkbox和radiobutton时,代码有些复杂了,这不是我们希望看到的,所以,我觉得有必要把它重构一下,为mvc加两个扩展方法吧,呵呵。

做在后

DropDownListFor的方法签名做的不错,很面向对象,很简洁,但不知不何,checkbox和radiobutton确没有这样的重载,呵呵

        public static MvcHtmlString DropDownListFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, IEnumerable<SelectListItem> selectList);
public static MvcHtmlString DropDownListFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, IEnumerable<SelectListItem> selectList, IDictionary<string, object> htmlAttributes);
public static MvcHtmlString DropDownListFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, IEnumerable<SelectListItem> selectList, object htmlAttributes);
public static MvcHtmlString DropDownListFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, IEnumerable<SelectListItem> selectList, string optionLabel);
public static MvcHtmlString DropDownListFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, IEnumerable<SelectListItem> selectList, string optionLabel, IDictionary<string, object> htmlAttributes);
public static MvcHtmlString DropDownListFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, IEnumerable<SelectListItem> selectList, string optionLabel, object htmlAttributes);

对于checkbox和radiobutton它们只有简单的几个重载,没有对集合的支持,所以,我的这次代码扩展,主要是针对集合来说的,看方法签名:

aaarticlea/png;base64,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" alt="" />

下面看一下原代码,它直接写在了System.Web.Mvc命名空间下,这更说明我是对微软MVC的一个扩展,希望MVC5出来时,可以把这些都集成进去,呵呵

#region 单选框和复选框的扩展
/// <summary>
/// 复选框,selValue为选中项
/// </summary>
/// <param name="htmlHelper"></param>
/// <param name="name"></param>
/// <param name="selectList"></param>
/// <param name="selValue"></param>
/// <returns></returns>
public static MvcHtmlString CheckBox(this HtmlHelper htmlHelper, string name, IEnumerable<SelectListItem> selectList, IEnumerable<string> selValue)
{
return CheckBoxAndRadioFor<object, string>(name, selectList, false, selValue);
}
public static MvcHtmlString CheckBox(this HtmlHelper htmlHelper, string name, IEnumerable<SelectListItem> selectList, string selValue)
{
return CheckBox(htmlHelper, name, selectList, new List<string> { selValue }); }
/// <summary>
/// 复选框
/// </summary>
/// <param name="htmlHelper"></param>
/// <param name="name"></param>
/// <param name="selectList"></param>
/// <returns></returns>
public static MvcHtmlString CheckBoxFor(this HtmlHelper htmlHelper, string name, IEnumerable<SelectListItem> selectList)
{
return CheckBox(htmlHelper, name, selectList, new List<string>());
}
/// <summary>
/// 根据列表输出checkbox
/// </summary>
/// <typeparam name="TModel"></typeparam>
/// <typeparam name="TProperty"></typeparam>
/// <param name="htmlHelper"></param>
/// <param name="expression"></param>
/// <param name="selectList"></param>
/// <returns></returns>
public static MvcHtmlString CheckBoxFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, IEnumerable<SelectListItem> selectList)
{
return CheckBoxFor(htmlHelper, expression, selectList, null);
} /// <summary>
/// 根据列表输出checkbox,selValue为默认选中的项
/// </summary>
/// <typeparam name="TModel"></typeparam>
/// <typeparam name="TProperty"></typeparam>
/// <param name="htmlHelper"></param>
/// <param name="expression"></param>
/// <param name="selectList"></param>
/// <param name="selValue"></param>
/// <returns></returns>
public static MvcHtmlString CheckBoxFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, IEnumerable<SelectListItem> selectList, string selValue)
{
string name = ExpressionHelper.GetExpressionText(expression);
return CheckBoxAndRadioFor<TModel, TProperty>(name, selectList, false, new List<string> { selValue });
}
/// <summary>
/// 输出单选框和复选框
/// </summary>
/// <typeparam name="TModel"></typeparam>
/// <typeparam name="TProperty"></typeparam>
/// <param name="expression"></param>
/// <param name="selectList"></param>
/// <param name="isRadio"></param>
/// <param name="selValue"></param>
/// <returns></returns>
static MvcHtmlString CheckBoxAndRadioFor<TModel, TProperty>(
string name,
IEnumerable<SelectListItem> selectList,
bool isRadio,
IEnumerable<string> selValue)
{
StringBuilder str = new StringBuilder();
int c = ;
string check, activeClass;
string type = isRadio ? "Radio" : "checkbox"; foreach (var item in selectList)
{
c++;
if (selValue != null && selValue.Contains(item.Value))
{
check = "checked='checked'";
activeClass = "style=color:red";
}
else
{
check = string.Empty;
activeClass = string.Empty;
}
str.AppendFormat("<span><input type='{3}' value='{0}' name={1} id={1}{2} " + check + "/>", item.Value, name, c, type);
str.AppendFormat("<label for='{0}{1}' {3}>{2}</lable></span>", name, c, item.Text, activeClass); }
return MvcHtmlString.Create(str.ToString());
} public static MvcHtmlString RadioButton(this HtmlHelper htmlHelper, string name, IEnumerable<SelectListItem> selectList, IEnumerable<string> selValue)
{
return CheckBoxAndRadioFor<object, string>(name, selectList, true, selValue);
}
/// <summary>
/// 单选按钮组,seletList为选中项
/// </summary>
/// <param name="htmlHelper"></param>
/// <param name="name"></param>
/// <param name="selectList"></param>
/// <param name="selValue"></param>
/// <returns></returns>
public static MvcHtmlString RadioButton(this HtmlHelper htmlHelper, string name, IEnumerable<SelectListItem> selectList, string selValue)
{
return RadioButton(htmlHelper, name, selectList, new List<string> { selValue });
}
/// <summary>
/// 单选按钮组
/// </summary>
/// <param name="htmlHelper"></param>
/// <param name="name"></param>
/// <param name="selectList"></param>
/// <returns></returns>
public static MvcHtmlString RadioButton(this HtmlHelper htmlHelper, string name, IEnumerable<SelectListItem> selectList)
{
return RadioButton(htmlHelper, name, selectList, new List<string>());
}
/// <summary>
/// 根据列表输出radiobutton
/// </summary>
/// <typeparam name="TModel"></typeparam>
/// <typeparam name="TProperty"></typeparam>
/// <param name="htmlHelper"></param>
/// <param name="expression"></param>
/// <param name="selectList"></param>
/// <returns></returns>
public static MvcHtmlString RadioButtonFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, IEnumerable<SelectListItem> selectList)
{
return RadioButtonFor(htmlHelper, expression, selectList, new List<string>());
}
public static MvcHtmlString RadioButtonFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, IEnumerable<SelectListItem> selectList, IEnumerable<string> selValue)
{
string name = ExpressionHelper.GetExpressionText(expression);
return CheckBoxAndRadioFor<TModel, TProperty>(name, selectList, true, selValue);
}
/// <summary>
/// 根据列表输出radiobutton,selValue为默认选中的项
/// </summary>
/// <typeparam name="TModel"></typeparam>
/// <typeparam name="TProperty"></typeparam>
/// <param name="htmlHelper"></param>
/// <param name="expression"></param>
/// <param name="selectList"></param>
/// <param name="selValue"></param>
/// <returns></returns>
public static MvcHtmlString RadioButtonFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, IEnumerable<SelectListItem> selectList, string selValue)
{
return RadioButtonFor(htmlHelper, expression, selectList, new List<string> { selValue });
}
#endregion

回到目录

爱上MVC~为CheckBoxFor和RadioButtonFor加个扩展方法吧(希望MVC5把这方法收纳——呵呵)的更多相关文章

  1. 在MVC应用程序中动态加载PartialView

    原文:在MVC应用程序中动态加载PartialView 有时候,我们不太想把PartialView直接Render在Html上,而是使用jQuery来动态加载,或是某一个事件来加载.为了演示与做好这个 ...

  2. Spring MVC 项目搭建 -4- spring security-添加自定义登录页面

    Spring MVC 项目搭建 -4- spring security-添加自定义登录页面 修改配置文件 <!--spring-sample-security.xml--> <!-- ...

  3. 【Spring MVC】Properties文件的加载

    [Spring MVC]Properties文件的加载 转载:https://www.cnblogs.com/yangchongxing/p/10726885.html 参考:https://java ...

  4. 爱上MVC~图表的使用Chart

    回到目录 图表在一个系统中是必须的,MVC架构把它当然是一个扩展集成了进来,通过简单的几句话就可以生成一个风格多样的图表,这给报表的开发带来了很大的方便,大叔的项目中也做了一个测试,把主要的代码贴出来 ...

  5. Spring MVC 后端获取前端提交的json格式字符串并直接转换成control方法对应的参数对象

    场景: 在web应用开发中,spring mvc凭借出现的性能和良好的可扩展性,导致使用日渐增多,成为事实标准,在日常的开发过程中,有一个很常见的场景:即前端通过ajax提交方式,提交参数为一个jso ...

  6. 百度编辑器ueditor 异步加载时,初始化没办法赋值bug解决方法

    百度编辑器ueditor 异步加载时,初始化没办法赋值bug解决方法 金刚 前端 ueditor 初始化 因项目中使用了百度编辑器——ueditor.整体来说性能还不错. 发现问题 我在做一个编辑页面 ...

  7. Asp.net MVC的Model Binder工作流程以及扩展方法(2) - Binder Attribute

    上篇文章中分析了Custom Binder的弊端: 由于Custom Binder是和具体的类型相关,比如指定类型A由我们的Custom Binder解析,那么导致系统运行中的所有Action的访问参 ...

  8. .Net MVC 导入导出Excel总结(三种导出Excel方法,一种导入Excel方法) 通过MVC控制器导出导入Excel文件(可用于java SSH架构)

    .Net MVC  导入导出Excel总结(三种导出Excel方法,一种导入Excel方法) [原文地址] 通过MVC控制器导出导入Excel文件(可用于java SSH架构)   public cl ...

  9. ASP.NET MVC 3 loginUrl自动变成Account/Login,并且发生404错误的解决方法

    http://www.cnblogs.com/think8848/archive/2011/07/08/2100814.html ASP.NET MVC 3 loginUrl自动变成Account/L ...

随机推荐

  1. How to copy remote computer files quickly to local computer

    if we want copy file from VM(Remote VM) to local computer. Always can not easy copy file so easy. no ...

  2. SVN强制解锁操作

    如果是其他人锁定文件,而你期望对此文件操作,可进行偷锁操作: 1,将被锁定文件SVN Check out-到本机硬盘. 2,点击文件右键,选择get lock 3,勾上steal the locks ...

  3. Mvc模板页

    以前学过WEB的应该都知道母版页这个东西,在这里呢,mvc的模板页和WEB中的模板页也是一样的效果和用途. 首先:创建一个项目,控制器,生成Index视图,在生成视图的时候我们选择Razor视图引擎, ...

  4. Android Sqlite 工具类封装

    鉴于经常使用 Sqlite 数据库做数据持久化处理,进行了一点封装,方便使用. 该封装类主要支持一下功能 支持多用户数据储存 支持 Sqlite数据库升级 支持传入 Sql 语句建表 支持 SQLit ...

  5. 【转载】Adapter用法总结大全

    下面的是看到的比较好的地址: Android各种Adapter的用法:                 http://my.oschina.net/u/658933/blog/372151 Andro ...

  6. Oracle查看用户操作sql语句以及数据库日志

    --查看日志文件 select member from v$logfile; --查看表空间使用情况 SELECT SUM(bytes) / (1024 * 1024) AS free_space, ...

  7. 使用Notepad++作为IDE代替Source Insight

    视图-->Folder as Workspace 视图-->函数列表 设置-->语言格式设置-->选择主题 插件-->Plugin Manager-->装上NppG ...

  8. GCD in Swfit 3.0

    这里包括了Queue, Group, Barrier, Semaphore等内容.基本上常用的GCD对象和方法在Swift3.0的改变都囊括其中. 代码在这里:https://github.com/f ...

  9. 举例详解CSS中的cursor属性

    这篇文章主要举例介绍了CSS中的cursor属性,包括zoom-in/zoom-out和grab/grabbing等常用属性值的使用,需要的朋友可以参考下 一.开篇之言 CSS3的领域范围已经渗透到了 ...

  10. maven pox配置

    Maven教程初级篇02:pom.xml配置初步 1. 创建项目并更改项目基本配置信息 在命令行下运行如下命令创建一个项目: 1 mvn archetype:create -DgroupId=net. ...