//在th中根据排序方向生成拍序列的展示标记
???????public static MvcHtmlString orderColumn(this HtmlHelper helper, string orderField, string orderWay, string fieldName)
???????{
??????????? StringBuilder stringBuilder = new StringBuilder();
??????????? if (fieldName == orderField)
??????????? {
??????????????? IDictionary<string, object> HtmlAttributes = new Dictionary<string, object>();
??????????????? HtmlAttributes.Add("height", "10px");
??????????????? if (orderWay == "asc")
??????????????????? HtmlAttributes.Add("src", "/Content/images/desc.png");
??????????????? if (orderWay == "desc")
??????????????????? HtmlAttributes.Add("src", "/Content/images/asc.png");
??????????????? TagBuilder tagBuilder = new TagBuilder("img");
??????????????? tagBuilder.MergeAttributes<string, object>(HtmlAttributes);
??????????????? string inputAllHtml = tagBuilder.ToString(TagRenderMode.SelfClosing);
??????????????? stringBuilder.Append(inputAllHtml);
??????????? }
??????????? return MvcHtmlString.Create(stringBuilder.ToString());
???????}
???????//多选下拉框
???????public static MvcHtmlString DropDownListMul(this HtmlHelper helper, string name, IEnumerable<SelectListItem> selectList,object htmlAttributes = null)
???????{
??????????? StringBuilder stringBuilder = new StringBuilder();
??????????? //select属性
??????????? IDictionary<string, object> selectTagAttributes = HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes);
??????????? selectTagAttributes.Add("name", name);
??????????? selectTagAttributes.Add("multiple", "multiple");
??????????? //select标记,并附加属性
??????????? TagBuilder selectTag = new TagBuilder("select");
??????????? selectTag.MergeAttributes<string, object>(selectTagAttributes);
??????????? //添加select开始标记
??????????? stringBuilder.Append(selectTag.ToString(TagRenderMode.StartTag));
??????????? //添加option标记
??????????? foreach (var item in selectList)
??????????? {
??????????????? IDictionary<string, object> optionTagAttributes = new Dictionary<string, object>();
??????????????? optionTagAttributes.Add("value", item.Value);
??????????????? if (item.Selected)
??????????????????? optionTagAttributes.Add("selected", "selected");
??????????????? TagBuilder optionTag = new TagBuilder("option");
??????????????? optionTag.MergeAttributes<string, object>(optionTagAttributes);
??????????????? stringBuilder.Append(optionTag.ToString(TagRenderMode.StartTag));
??????????????? stringBuilder.Append(item.Text);
??????????????? stringBuilder.Append(optionTag.ToString(TagRenderMode.EndTag));
??????????? }
??????????? //添加select结束标记
??????????? stringBuilder.Append(selectTag.ToString(TagRenderMode.EndTag));
??????????? return MvcHtmlString.Create(stringBuilder.ToString());
???????}
???????//只读文本框(不可变更)
???????public static MvcHtmlString TextBoxRead(this HtmlHelper helper, string name, object value, object htmlAttributes = null)
???????{
??????????? //获取传入的htmlAttributes信息
??????????? IDictionary<string, object> HtmlAttributes = HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes);
??????????? //构建checkbox属性
??????????? HtmlAttributes.Add("type", "text");
??????????? HtmlAttributes.Add("name", string.Format("{0}", name));
??????????? HtmlAttributes.Add("class", "labelShow");
??????????? HtmlAttributes.Add("readonly", "true");
??????????? HtmlAttributes.Add("value", value);
??????????? TagBuilder tagBuilder = new TagBuilder("input");
??????????? tagBuilder.MergeAttributes<string, object>(HtmlAttributes);
??????????? string inputAllHtml = tagBuilder.ToString(TagRenderMode.SelfClosing);
??????????? return MvcHtmlString.Create(inputAllHtml);
???????}
???????//带for的单选列表
???????public static MvcHtmlString RadioButtonListFor<TModel, TProperty>(this HtmlHelper<TModel> helper,Expression<Func<TModel, TProperty>> expression,IEnumerable<SelectListItem> selectList, object htmlAttributes = null, bool isHorizon = true)
???????{
??????????? string[] propertys = expression.ToString().Split(".".ToCharArray());
??????????? string name = string.Join(".", propertys, 1, propertys.Length - 1);
??????????? return RadioButtonList(helper, name, selectList, htmlAttributes, isHorizon);
???????}
???????//单选列表基础类
???????public static MvcHtmlString RadioButtonList(this HtmlHelper helper, string name, IEnumerable<SelectListItem> selectList, object htmlAttributes = null, bool isHorizon = true)
???????{
??????????? StringBuilder stringBuilder = new StringBuilder();
??????????? foreach (SelectListItem selectItem in selectList)
??????????? {
??????????????? //获取传入的htmlAttributes信息
??????????????? IDictionary<string, object> HtmlAttributes = HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes);
??????????????? //构建checkbox属性
??????????????? HtmlAttributes.Add("type", "radio");
??????????????? HtmlAttributes.Add("id", string.Format("{0}[{1}]", name, selectItem.Value));
??????????????? HtmlAttributes.Add("name", string.Format("{0}", name));
??????????????? HtmlAttributes.Add("class", "ruiCheckBox");
??????????????? HtmlAttributes.Add("value", selectItem.Value);
??????????????? if (selectItem.Selected)
??????????????? {
??????????????????? HtmlAttributes.Add("checked", "checked");
??????????????? }
??????????????? TagBuilder tagBuilder = new TagBuilder("input");
??????????????? tagBuilder.MergeAttributes<string, object>(HtmlAttributes);
??????????????? string inputAllHtml = tagBuilder.ToString(TagRenderMode.SelfClosing);
??????????????? string containerFormat = isHorizon ? @"<span>{0}{1}</span> " : @"<p><span>{0}{1}</span></p>";
??????????????? stringBuilder.AppendFormat(containerFormat, selectItem.Text, inputAllHtml);
??????????? }
??????????? return MvcHtmlString.Create(stringBuilder.ToString());
???????}
???????
???????//带for的 复选列表
???????public static MvcHtmlString CheckBoxListFor<TModel, TProperty>(this HtmlHelper<TModel> helper,
???????????Expression<Func<TModel, TProperty>> expression, IEnumerable<SelectListItem> selectList, object htmlAttributes=null, bool isHorizon = true)
???????{
??????????? string[] propertys = expression.ToString().Split(".".ToCharArray());
??????????? string name = string.Join(".", propertys, 1, propertys.Length - 1);
??????????? return CheckBoxList(helper, name, selectList, htmlAttributes, isHorizon);
???????}
???????//复选列表基础类
???????/// <summary>
???????///
???????/// </summary>
???????/// <param name="helper"></param>
???????/// <param name="name">标记名称</param>
???????/// <param name="selectList">列表项</param>
???????/// <param name="htmlAttributes">html属性</param>
???????/// <param name="isHorizon">排列方式</param>
???????/// <returns></returns>
???????public static MvcHtmlString CheckBoxList(this HtmlHelper helper, string name, IEnumerable<SelectListItem> selectList, object htmlAttributes=null, bool isHorizon = true)
???????{
??????????? StringBuilder stringBuilder = new StringBuilder();
??????????? foreach (SelectListItem selectItem in selectList)
??????????? {
??????????????? //获取传入的htmlAttributes信息
??????????????? IDictionary<string, object> HtmlAttributes = HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes);
??????????????? //构建checkbox属性
??????????????? HtmlAttributes.Add("type", "checkbox");
??????????????? HtmlAttributes.Add("id", string.Format("{0}[{1}]", name, selectItem.Value));
??????????????? HtmlAttributes.Add("name", string.Format("{0}", name));
??????????????? HtmlAttributes.Add("class", "ruiCheckBox");
??????????????? HtmlAttributes.Add("value", selectItem.Value);
??????????????? if (selectItem.Selected)
??????????????? {
??????????????????? HtmlAttributes.Add("checked", "checked");
??????????????? }
??????????????? TagBuilder tagBuilder = new TagBuilder("input");
??????????????? tagBuilder.MergeAttributes<string, object>(HtmlAttributes);
??????????????? string inputAllHtml = tagBuilder.ToString(TagRenderMode.SelfClosing);
??????????????? string containerFormat = isHorizon ? @"<span>{0}{1}</span>" : @"<p><span>{0}{1}</span></p>";
??????????????? stringBuilder.AppendFormat(containerFormat, selectItem.Text, inputAllHtml);
??????????? }
??????????? return MvcHtmlString.Create(stringBuilder.ToString());
???????}
???????//复选框辅助类 - 授权页面用
???????/// <summary>
???????///
???????/// </summary>
???????/// <param name="helper"></param>
???????/// <param name="name">标记名称</param>
???????/// <param name="allowOperations">允许出现的项目</param>
???????/// <param name="haveOperations">已选中的项目</param>
???????/// <param name="allOperations">所有的列表项信息,用来获取操作名称的</param>
???????/// <returns></returns>
???????public static MvcHtmlString CheckBoxListPriv(this HtmlHelper helper, string name, string allowOperations, string haveOperations,
???????????IEnumerable<SelectListItem> allOperations)
???????{
??????????? StringBuilder stringBuilder = new StringBuilder();
??????????? List<string> allowList = (from a in allowOperations.Split(‘,‘)
????????????????????????????????????? where a.Length > 0
????????????????????????????????????? select a).ToList();
??????????? List<string> haveList = (from a in haveOperations.Split(‘,‘)
???????????????????????????????? where a.Length > 0
select a).ToList();
??????????? foreach (string code in allowList)
??????????? {
??????????????? //获取传入的htmlAttributes信息
??????????????? IDictionary<string, object> HtmlAttributes = new Dictionary<string, object>();
??????????????? //构建checkbox属性
??????????????? HtmlAttributes.Add("type", "checkbox");
??????????????? HtmlAttributes.Add("name", name);
??????????????? HtmlAttributes.Add("class", "ruiCheckBox");
??????????????? HtmlAttributes.Add("value", code);
??????????????? if (haveList.Contains(code))
??????????????? {
??????????????????? HtmlAttributes.Add("checked", "checked");
??????????????? }
??????????????? TagBuilder tagBuilder = new TagBuilder("input");
??????????????? tagBuilder.MergeAttributes<string, object>(HtmlAttributes);
??????????????? string inputAllHtml = tagBuilder.ToString(TagRenderMode.SelfClosing);
??????????????? string containerFormat = string.Format(@"<span>{0}{1}</span>", HtmlExtensions.getNameByCode(allOperations, code), inputAllHtml);
??????????????? stringBuilder.Append(containerFormat);
??????????? }
??????????? return MvcHtmlString.Create(stringBuilder.ToString());
???????}
???????//复选框辅助类 - 多选
???????/// <summary>
???????///
???????/// </summary>
???????/// <param name="helper"></param>
???????/// <param name="name">标记名称</param>
???????/// <param name="selectedItems">已选中的项目,分割</param>
???????/// <param name="allItems">所有的项目</param>
???????/// <returns></returns>
???????public static MvcHtmlString checkBoxListHelper(this HtmlHelper helper, string name, string selectedItems, IEnumerable<SelectListItem> allItems)
???????{
??????????? StringBuilder stringBuilder = new StringBuilder();
??????????? List<string> allowList = (from a in selectedItems.Split(‘,‘)
????????????????????????????????????? where a.Length > 0
????????????????????????????????????? select a).ToList();
??????????? foreach (SelectListItem item in allItems)
??????????? {
??????????????? //获取传入的htmlAttributes信息
??????????????? IDictionary<string, object> HtmlAttributes = new Dictionary<string, object>();
??????????????? //构建checkbox属性
??????????????? HtmlAttributes.Add("type", "checkbox");
??????????????? HtmlAttributes.Add("name", name);
??????????????? HtmlAttributes.Add("class", "ruiCheckBox");
??????????????? HtmlAttributes.Add("value", item.Value);
??????????????? if (allowList.Contains(item.Value))
??????????????? {
??????????????????? HtmlAttributes.Add("checked", "checked");
??????????????? }
??????????????? TagBuilder tagBuilder = new TagBuilder("input");
??????????????? tagBuilder.MergeAttributes<string, object>(HtmlAttributes);
??????????????? string inputAllHtml = tagBuilder.ToString(TagRenderMode.SelfClosing);
??????????????? string containerFormat = string.Format(@"<span>{0}{1}</span>", item.Text, inputAllHtml);
??????????????? stringBuilder.Append(containerFormat);
??????????? }
??????????? return MvcHtmlString.Create(stringBuilder.ToString());
???????}
???????/// <summary>
???????/// 显示字段的名称DisplayName的值
???????/// 好了之后,统一修改为@Html.DisplayForDate
???????/// </summary>
???????/// <typeparam name="TModel"></typeparam>
???????/// <typeparam name="TValue"></typeparam>
???????/// <param name="html"></param>
???????/// <param name="expression"></param>
???????/// <returns></returns>
???????public static MvcHtmlString ShowDate<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression)
???????{
??????????? var metadata = ModelMetadata.FromLambdaExpression(expression, html.ViewData);
??????????? //DateTime类型
??????????? if (typeof(TValue) == typeof(DateTime))
??????????? {
??????????????? if (metadata.ModelType == typeof(DateTime))
??????????????? {
??????????????????? DateTime dt = (DateTime)metadata.Model;
??????????????????? return MvcHtmlString.Create(dt.ToString(rui.config.dateFormat));
??????????????? }
??????????????? return MvcHtmlString.Create("Oops,not a DateTime");
??????????? }
??????????? //DateTime?类型
??????????? else if (typeof(TValue) == typeof(DateTime?))
??????????? {
??????????????? if (metadata.ModelType == typeof(DateTime?))
??????????????? {
??????????????????? if (metadata.Model == null)
??????????????????????? return MvcHtmlString.Create("");
??????????????????? else
??????????????????? {
??????????????????????? DateTime dt = Convert.ToDateTime(metadata.Model);
??????????????????????? return MvcHtmlString.Create(dt.ToString(rui.config.dateFormat));
??????????????????? }
??????????????? }
??????????????? return MvcHtmlString.Create("Oops,not a DateTime");
??????????? }
??????????? else
??????????? {
??????????????? return MvcHtmlString.Create("Oops,not a DateTime");
??????????? }
???????}
???????//返回列表项中某个Code的Name值
???????private static string getNameByCode(IEnumerable<SelectListItem> list, string code)
???????{
??????????? string result = "";
??????????? foreach (var item in list)
??????????? {
??????????????? if (item.Value == code)
??????????????????? return item.Text;
??????????? }
??????????? return result;
???????}
htmlExtensions类
原文地址:https://www.cnblogs.com/feihusurfer/p/9117662.html