using Microsoft.AspNetCore.Html; using Microsoft.AspNetCore.Mvc.ViewFeatures; using System.ComponentModel.DataAnnotations; using System.Linq.Expressions; using System.Net; using System.Text; using System.Text.Encodings.Web; using System.Text.RegularExpressions; namespace YLErp.Web { /// /// /// public static class FormExtensions { private static string FormatDate(DateTime? d) { return d == null ? string.Empty : ((DateTime)d).ToString("yyyy-MM-dd"); } private static string ToHtmlString(IHtmlContent content) { using (var writer = new StringWriter()) { content.WriteTo(writer, HtmlEncoder.Default); return writer.ToString(); } } private static ModelExpression GetModelExpression(IHtmlHelper helper, Expression> expression) { var expressionProvider = helper.ViewContext.HttpContext.RequestServices .GetService(typeof(ModelExpressionProvider)) as ModelExpressionProvider; return expressionProvider.CreateModelExpression(helper.ViewData, expression); } public static IHtmlContent MyDisplayFor(this IHtmlHelper helper, Expression> expression, string text) { var displayName = helper.DisplayNameFor(expression); return new HtmlString(string.Format("{0}{1}", displayName, text)); } public static IHtmlContent MyDisplayFor(this IHtmlHelper helper, Expression> expression) { return MyDisplayFor(helper, expression, false); } public static IHtmlContent MyDisplayFor(this IHtmlHelper helper, Expression> expression, bool isRaw) { var modelExpression = GetModelExpression(helper, expression); var text = ""; var valueType = typeof(TValue); if (modelExpression.Model is null) { } else if (valueType == typeof(DateTime)) { if (modelExpression.Metadata.PropertyName.Contains("Time")) { text = ((DateTime)modelExpression.Model).ToString("yyyy/MM/dd HH:mm"); } else { text = FormatDate((DateTime)modelExpression.Model); } } else if (valueType == typeof(DateTime?)) { if (modelExpression.Metadata.PropertyName.Contains("Time")) { text = ((DateTime?)modelExpression.Model).Value.ToString("yyyy/MM/dd HH:mm"); } else { text = FormatDate((DateTime?)modelExpression.Model); } } else if (valueType == typeof(bool)) { text = ((bool)modelExpression.Model) ? "是" : "否"; } else if (valueType == typeof(bool?)) { text = ((bool?)modelExpression.Model).Value ? "是" : "否"; } else { text = helper.ValueFor(expression); } var displayName = helper.DisplayNameFor(expression); if (isRaw) { return new HtmlString(string.Format("{0}{1}", displayName, helper.Raw(text))); } else { return new HtmlString(string.Format("{0}{1}", displayName, helper.Encode(text).Replace("\n", "
"))); } } public static IHtmlContent MyAceDropdownFor(this IHtmlHelper helper, Expression> expression, List list, string defaultValue = "", bool appendBlank = true, bool showRequired = false, string layoutClass = "col-md-6", string placeholder = null) { return MyAceDropdownFor(helper, expression, list.Select(HtmlExtensions.AsSelectListItem).ToList(), defaultValue, appendBlank, showRequired, layoutClass, placeholder); } public static IHtmlContent MyAceDropdownFor(this IHtmlHelper helper, Expression> expression, List list, string defaultValue = "", bool appendBlank = true, bool showRequired = false, string layoutClass = "col-md-6", string placeholder = null) { if (appendBlank == true) { if (list.Count == 0 || list.Count > 0 && list[0].Value != "") { list.Insert(0, new SelectListItem() { Value = "", Text = "----" }); } } var modelExpression = GetModelExpression(helper, expression); var dValue = defaultValue; var needReplaceString = new List(); if (!string.IsNullOrEmpty(defaultValue)) { foreach (var selectListItem in list) { if (selectListItem.Value == defaultValue) { selectListItem.Selected = true; } } } else if (!string.IsNullOrEmpty(modelExpression.Model + "")) { dValue = modelExpression.Model + ""; var selectValues = dValue.Split(","[0]).ToList(); foreach (var sel in selectValues) { if (string.IsNullOrEmpty(sel)) { continue; } needReplaceString.Add(string.Format("value=\"{0}\"", sel)); foreach (var selectListItem in list) { if (selectListItem.Value == sel + "") { selectListItem.Selected = true; } } } } var m3 = helper.ValidationMessageFor(expression); ///0,1,2,3ddlstring var str = "
{2} {3} {4}
"; var m2 = helper.DropDownList(modelExpression.Name, list, new { @class = "chosen-select", data_placeholder = placeholder != null ? placeholder : "请选择 ", multiple = "" }); var m2FilterString = ToHtmlString(m2); needReplaceString.ForEach(r => m2FilterString = m2FilterString.Replace(r, r + " selected=\"selected\" ")); var displayName = helper.DisplayNameFor(expression); var fullStr = string.Format(str, modelExpression.Name, displayName, m2FilterString , showRequired || modelExpression.Metadata.IsRequired ? " *" : "", ToHtmlString(m3), layoutClass); return new HtmlString(fullStr); } public static IHtmlContent MyCheckBoxFor(this IHtmlHelper helper, Expression> expression, bool required = false) { var modelExpression = GetModelExpression(helper, expression); var str = @"
{4} {5}
"; var _required = modelExpression.Metadata.IsRequired || required; bool.TryParse(modelExpression.Model + "", out var ischecked); var m3 = helper.ValidationMessageFor(expression); var displayName = helper.DisplayNameFor(expression); var fullStr = string.Format(str, modelExpression.Name, displayName, ischecked ? "checked='checked'" : "", _required ? string.Format(" data-val='true' data-val-required='{0} 字段是必需的'", displayName) : "", _required ? " *" : "", ToHtmlString(m3)); return new HtmlString(fullStr); } public static IHtmlContent MyDecimalFor(this IHtmlHelper helper, Expression> expression, bool required = false) { return MyDecimalFor(helper, expression, null, required); } /// /// /// /// /// /// /// /// html属性赋值,例如:new{value="11"} /// /// public static IHtmlContent MyDecimalFor(this IHtmlHelper helper, Expression> expression, object htmlAttributes, bool required = false, bool isPercent = false)//(this IHtmlHelper helper, string name, decimal? Value) { var modelExpression = GetModelExpression(helper, expression); var str = @"
{4} {5}
"; //data-val='true' data-val-number='请输入数值' var _required = modelExpression.Metadata.IsRequired || required; var HtmlAttributes = HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes); var sbAttribute = new StringBuilder(); object attrValue = null; foreach (var a in HtmlAttributes) { sbAttribute.AppendFormat(" {0}=\"{1}\" ", a.Key, WebUtility.HtmlEncode(a.Value?.ToString())); if (a.Key.ToLower() == "value") { attrValue = a.Value; } } var setValueData = modelExpression.Model; if (modelExpression.Model == null && attrValue != null) { setValueData = attrValue; } var afterAppend = ""; if (isPercent) { afterAppend = "%"; } var m3 = helper.ValidationMessageFor(expression); var displayName = helper.DisplayNameFor(expression); var fullStr = string.Format(str, modelExpression.Name, displayName, setValueData , _required ? string.Format(" data-val='true' data-val-required='{0} 字段是必需的'", displayName) : "" , (_required ? " *" : "") + afterAppend, ToHtmlString(m3), sbAttribute, "{1,2}"); return new HtmlString(fullStr); } public static IHtmlContent MyIntFor(this IHtmlHelper helper, Expression> expression, bool required = false) { var data = new { onkeyup = "this.value=this.value.replace(/[^0-9]/g,'')" }; return MyTextFor(helper, expression, data, required); } public static IHtmlContent MyTextFor(this IHtmlHelper helper, Expression> expression, bool required = false, bool showLable = true) { return MyTextFor(helper, expression, null, required, showLable: showLable); } public static IHtmlContent MyTextFor(this IHtmlHelper helper, Expression> expression, object htmlAttributes, bool required = false, string requireStr = "", bool showLable = true) { var modelExpression = GetModelExpression(helper, expression); var str = showLable ? "
{4}{5}
" : "
{4}{5}
"; var HtmlAttributes = HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes); var sbAttribute = new StringBuilder(); object attrValue = null; foreach (var a in HtmlAttributes) { sbAttribute.AppendFormat(" {0}=\"{1}\" ", a.Key, WebUtility.HtmlEncode(a.Value?.ToString())); if (a.Key.ToLower() == "value") { attrValue = a.Value; } } var _required = modelExpression.Metadata.IsRequired || required; var setValueData = modelExpression.Model; var m3 = helper.ValidationMessageFor(expression); if (modelExpression.Model == null && attrValue != null) { setValueData = attrValue; } var displayName = helper.DisplayNameFor(expression); var fullStr = string.Format(str, modelExpression.Name, displayName, setValueData , _required ? string.Format(" data-val='true' data-val-required='{0}{1}'", displayName, requireStr) : "" , _required ? " *" : "", ToHtmlString(m3), sbAttribute.ToString()); return new HtmlString(fullStr); } public static IHtmlContent MyTextAreaFor(this IHtmlHelper helper, Expression> expression, int row) { return MyTextAreaFor(helper, expression, row, null); } public static IHtmlContent MyTextAreaFor(this IHtmlHelper helper, Expression> expression, int row, object htmlAttributes) { var modelExpression = GetModelExpression(helper, expression); var m3 = helper.ValidationMessageFor(expression); //width:80% var HtmlAttributes = HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes); var sbAttribute = new StringBuilder(); foreach (var a in HtmlAttributes) { sbAttribute.AppendFormat(" {0}=\"{1}\" ", a.Key, WebUtility.HtmlEncode(a.Value?.ToString())); } var str = @"
{4} {6}
"; var displayName = helper.DisplayNameFor(expression); var fullStr = string.Format(str, modelExpression.Name, displayName, modelExpression.Model, modelExpression.Metadata.IsRequired ? string.Format(" data-val='true' data-val-required='{0} 字段是必需的'", displayName) : "", modelExpression.Metadata.IsRequired ? " *" : "", row, ToHtmlString(m3), sbAttribute); return new HtmlString(fullStr); } public static IHtmlContent MyDateTimeFor(this IHtmlHelper helper, Expression> expression, bool required = false) { var modelExpression = GetModelExpression(helper, expression); var m3 = helper.ValidationMessageFor(expression); var str = @"
{4} {5}
"; var valueStr = DateTime.Now.ToString(); if (modelExpression.Model != null) { DateTime.TryParse(modelExpression.Model + "", out var dtnew); if (dtnew != DateTime.MinValue) { valueStr = dtnew.ToString("yyyy-MM-dd HH:mm"); } } var displayName = helper.DisplayNameFor(expression); var _required = modelExpression.Metadata.IsRequired || required; var fullStr = string.Format(str, modelExpression.Name, displayName, valueStr , _required ? string.Format(" data-val='true' data-val-required='{0} 字段是必需的'", displayName) : "" , _required ? " *" : "", ToHtmlString(m3)); return new HtmlString(fullStr); } public static IHtmlContent MyDateFor(this IHtmlHelper helper, Expression> expression, bool required = false) { var modelExpression = GetModelExpression(helper, expression); var m3 = helper.ValidationMessageFor(expression); var str = @"
{4}{5}
"; var valueStr = ""; if (modelExpression.Model != null) { DateTime.TryParse(modelExpression.Model + "", out var dtnew); if (dtnew != DateTime.MinValue) { valueStr = dtnew.ToString("yyyy-MM-dd"); } } var displayName = helper.DisplayNameFor(expression); var _required = modelExpression.Metadata.IsRequired || required; var fullStr = string.Format(str, modelExpression.Name, displayName, valueStr , _required ? string.Format(" data-val='true' data-val-required='{0} 字段是必需的'", displayName) : "" , _required ? " *" : "", ToHtmlString(m3)); return new HtmlString(fullStr); } public static IHtmlContent MyDropdownFor(this IHtmlHelper helper, Expression> expression, IList list, string defaultValue = "", bool appendBlank = true, bool showLable = true) { return MyDropdownFor(helper: helper, expression: expression, list: list, htmlAttributes: null, defaultValue: defaultValue, appendBlank: appendBlank, showLable: showLable); } public static IHtmlContent MyDropdownFor(this IHtmlHelper helper, Expression> expression, IEnumerable list, string defaultValue = "", bool appendBlank = true, bool showLable = true) { return MyDropdownFor(helper: helper, expression: expression, list: list, htmlAttributes: null, defaultValue: defaultValue, appendBlank: appendBlank, showLable: showLable); } public static IHtmlContent MyDropdownFor(this IHtmlHelper helper, Expression> expression, IEnumerable list, object htmlAttributes, string defaultValue = "", bool appendBlank = true, bool showLable = true, bool showRequired = false, string userDefinedId = null) { return MyDropdownFor(helper: helper, expression: expression, list: list.AsSelectListItems(), htmlAttributes: htmlAttributes, defaultValue: defaultValue, appendBlank: appendBlank, showLable: showLable, showRequired: showRequired, userDefinedId: userDefinedId); } public static IHtmlContent MyDropdownFor(this IHtmlHelper helper, Expression> expression, IList list, object htmlAttributes, string defaultValue = "", bool appendBlank = true, bool showLable = true, bool showRequired = false, string userDefinedId = null) { if (appendBlank) { if (list.Count == 0 || list.Count > 0 && list[0].Value != "" && list[0].Text != "----") { list.Insert(0, new SelectListItem() { Value = "", Text = "----" }); } } var valueType = typeof(TValue); var modelExpression = GetModelExpression(helper, expression); var IsRequired = modelExpression.Metadata.IsRequired; if (valueType.IsValueType && !valueType.GetCustomAttributes(typeof(RequiredAttribute), false).Any()) { IsRequired = false; } SelectListItem defaultList = null; if (!string.IsNullOrEmpty(defaultValue)) { foreach (var selectListItem in list) { if (selectListItem.Value == defaultValue) { selectListItem.Selected = true; defaultList = selectListItem; } } } else if (!string.IsNullOrEmpty(modelExpression.Model?.ToString())) { foreach (var selectListItem in list) { if (selectListItem.Value == modelExpression.Model?.ToString()) { selectListItem.Selected = true; } } } if (defaultList != null) { list.Remove(defaultList); list.Insert(0, defaultList); } var displayName = helper.DisplayNameFor(expression); var m3 = helper.ValidationMessageFor(expression); var fullName = userDefinedId.TrimToNull() ?? modelExpression.Name; var str = showLable ? "
{2} {3} {4}
" : "
{2} {3} {4}
"; var m2 = helper.DropDownList(fullName, list, null, htmlAttributes); var fullStr = string.Format(str, fullName, displayName, ToHtmlString(m2) , showRequired || IsRequired ? " *" : "", ToHtmlString(m3)); var autoDropDownSet = string.Format(@" ", fullName); return new HtmlString(fullStr + autoDropDownSet); } public static IHtmlContent MyDropdownFor1(this IHtmlHelper helper, Expression> expression, IEnumerable list, object htmlAttributes = null, string defaultValue = "", bool appendBlank = true, bool showLable = true) { return MyDropdownFor1(helper: helper, expression: expression, list: list.AsSelectListItems(), htmlAttributes: htmlAttributes, defaultValue: defaultValue, appendBlank: appendBlank, showLable: showLable); } public static IHtmlContent MyDropdownFor1(this IHtmlHelper helper, Expression> expression, IEnumerable list, object htmlAttributes = null, string defaultValue = "", bool appendBlank = true, bool showLable = true) { return MyDropdownFor1(helper: helper, expression: expression, list: list.Select(n => new SelectListItem { Text = n, Value = n }).ToList(), htmlAttributes: htmlAttributes, defaultValue: defaultValue, appendBlank: appendBlank, showLable: showLable); } public static IHtmlContent MyDropdownFor1(this IHtmlHelper helper, Expression> expression, IList list, object htmlAttributes = null, string defaultValue = "", bool appendBlank = true, bool showLable = true) { if (appendBlank) { if (list.Count == 0 || list.Count > 0 && list[0].Value != "") { list.Insert(0, new SelectListItem() { Value = "", Text = "----" }); } } var modelExpression = GetModelExpression(helper, expression); if (!string.IsNullOrEmpty(defaultValue)) { foreach (var selectListItem in list) { if (selectListItem.Value == defaultValue) { selectListItem.Selected = true; } } } else if (!string.IsNullOrEmpty(modelExpression.Model?.ToString())) { foreach (var selectListItem in list) { if (selectListItem.Value == modelExpression.Model?.ToString()) { selectListItem.Selected = true; } } } var displayName = helper.DisplayNameFor(expression); var m3 = helper.ValidationMessageFor(expression); var str = showLable ? "
{2} {3} {4}
" : "
{2} {3} {4}
"; var m2 = helper.DropDownList(modelExpression.Name, list, null, htmlAttributes); var fullStr = string.Format(str, modelExpression.Name, displayName, ToHtmlString(m2) , modelExpression.Metadata.IsRequired ? " *" : "", ToHtmlString(m3)); return new HtmlString(fullStr); } public static IHtmlContent MyRadioButton(this IHtmlHelper helper, List list, string title, string controlName, string defaultValue, bool isRequired = false) { var str = @"
{2}{0} {1}
"; //0 controlname,1 value ,2 checked,3 title,4 text var singleRadio = @""; var checkstr = @" checked=""checked"" "; var sb = new StringBuilder(); foreach (var val in list) { if (val.Value == defaultValue) { val.Selected = true; sb.AppendFormat(singleRadio, controlName, val.Value, checkstr, val.Text); } else { sb.AppendFormat(singleRadio, controlName, val.Value, "", val.Text); } } var required = isRequired ? @"*" : ""; var fullStr = string.Format(str, sb, required, title); return new HtmlString(fullStr); } } public static class SearchExtensions { private static string ToHtmlString(IHtmlContent content) { using (var writer = new StringWriter()) { content.WriteTo(writer, HtmlEncoder.Default); return writer.ToString(); } } public static IHtmlContent MyAceDropdownInput(this IHtmlHelper helper, string name, string label, IEnumerable list) { return YcTemplateSearchExtensions.YcAceDropdownInput(helper, name, label, list.AsSelectListItems(), false); } public static IHtmlContent MyAceDropdownInput(this IHtmlHelper helper, string name, string label, IList list) { return YcTemplateSearchExtensions.YcAceDropdownInput(helper, name, label, list, false); } public static IHtmlContent MyAceDropdownInput(this IHtmlHelper helper, string name, string label, IList list, bool appendEmptyAll = true, bool enabled = true, object htmlAttributes = null, bool multiple = true) { return YcTemplateSearchExtensions.YcAceDropdownInput(helper, name, label, list.AsSelectListItems(), appendEmptyAll, enabled, htmlAttributes, multiple); } public static IHtmlContent MyAceDropdownInput(this IHtmlHelper helper, string name, string label, IList list, bool appendEmptyAll = true, bool enabled = true, object htmlAttributes = null, bool multiple = true) { return YcTemplateSearchExtensions.YcAceDropdownInput(helper, name, label, list, appendEmptyAll, enabled, htmlAttributes, multiple); } public static IHtmlContent MyMultiSelectDropdown(this IHtmlHelper helper, string name, string label, IList list) { return MyAceDropdownInputWithMultipleSearch(helper, name, label, list, false); } private static IHtmlContent MyAceDropdownInputWithMultipleSearch(this IHtmlHelper helper, string name, string label, IList list, bool appendEmptyAll = true, bool enabled = true, object htmlAttributes = null, bool multiple = true) { var temp = "{1}"; if (appendEmptyAll) { if (list != null && list.Count > 0 && list[0].Text != "全部") { list.Insert(0, new SelectListItem() { Text = "全部", Value = "" }); } } var option = multiple ? (object)(new { @class = "chosen-select", data_placeholder = "请选择 " + label, multiple = "" }) : (new { @class = "chosen-select", data_placeholder = "请选择 " + label }); var m2 = HtmlHelperSelectExtensions.DropDownList(helper, name, list, option); if (!enabled) { var inOption = multiple ? (new { @class = "chosen-select", @disabled = "disabled", data_placeholder = "请选择 " + label, multiple = "" }) : (object)(new { @class = "chosen-select", @disabled = "disabled", data_placeholder = "请选择 " + label }); m2 = HtmlHelperSelectExtensions.DropDownList(helper, name, list, inOption); } if (htmlAttributes != null) { m2 = HtmlHelperSelectExtensions.DropDownList(helper, name, list, htmlAttributes); } var m3 = new HtmlString("
" + string.Format(temp, name, label) + ToHtmlString(m2) + "
"); return m3; } public static IHtmlContent MyAceDropdownInput2(this IHtmlHelper helper, string name, string label, IEnumerable list, bool appendEmptyAll = true, string defaultvalue = "", bool enabled = true, object htmlAttributes = null) { return MyAceDropdownInput2(helper: helper, name: name, label: label, list: list.Select(n => new SelectListItem { Text = n, Value = n }).ToList(), appendEmptyAll: appendEmptyAll, defaultvalue: defaultvalue, enabled: enabled, htmlAttributes: htmlAttributes); } public static IHtmlContent MyAceDropdownInput2(this IHtmlHelper helper, string name, string label, IEnumerable list, bool appendEmptyAll = true, string defaultvalue = "", bool enabled = true, object htmlAttributes = null) { return MyAceDropdownInput2(helper: helper, name: name, label: label, list: list.Select(n => new SelectListItem { Text = n.Text, Value = n.Value }).ToList(), appendEmptyAll: appendEmptyAll, defaultvalue: defaultvalue, enabled: enabled, htmlAttributes: htmlAttributes); } public static IHtmlContent MyAceDropdownInput2(this IHtmlHelper helper, string name, string label, IList list, bool appendEmptyAll = true, string defaultvalue = "", bool enabled = true, object htmlAttributes = null) { var temp = "{1}"; if (appendEmptyAll) { if (list != null && list.Count > 0 && list[0].Text != "全部") { list.Insert(0, new SelectListItem() { Text = "全部", Value = "" }); } } if (!string.IsNullOrEmpty(defaultvalue)) { var dataSel = list.Where(l => l.Value == defaultvalue).FirstOrDefault(); if (dataSel != null) { dataSel.Selected = true; } } var m2 = HtmlHelperSelectExtensions.DropDownList(helper, name, list, htmlAttributes); if (htmlAttributes == null) { m2 = HtmlHelperSelectExtensions.DropDownList(helper, name, list, new { @class = "", data_placeholder = "请选择 " + label }); } if (!enabled) { m2 = HtmlHelperSelectExtensions.DropDownList(helper, name, list, new { @class = "", data_placeholder = "请选择 " + label, @disabled = "disabled" }); } var m3 = new HtmlString("
" + string.Format(temp, name, label) + ToHtmlString(m2) + "
"); return m3; } /*-----------------------------------------------------------------------------*/ public static IHtmlContent ShortInput(this IHtmlHelper helper, string name, string label) { var temp = "
{1}
"; return new HtmlString(string.Format(temp, name, label, helper.ViewData[name] ?? "")); } public static IHtmlContent SearchDate(this IHtmlHelper helper, string name, string label, object htmlAttributes = null) { var HtmlAttributes = HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes); var sbAttribute = new StringBuilder(); foreach (var a in HtmlAttributes) { if (string.IsNullOrWhiteSpace((a.Value ?? "").ToString())) { sbAttribute.AppendFormat(" {0} ", a.Key); } else { sbAttribute.AppendFormat(" {0}={1} ", a.Key, a.Value); } } var temp = "{1}"; return new HtmlString(string.Format(temp, name, label , (helper.ViewData["Date" + name] == null ? "" : string.Format("value='{0}'", helper.ViewData["Date" + name])) , sbAttribute.ToString())); } public static IHtmlContent SearchDateRange(this IHtmlHelper helper, string name, string label, object htmlAttributes = null) { var HtmlAttributes = HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes); var sbAttribute = new StringBuilder(); foreach (var a in HtmlAttributes) { if (string.IsNullOrWhiteSpace((a.Value ?? "").ToString())) { sbAttribute.AppendFormat(" {0} ", a.Key); } else { sbAttribute.AppendFormat(" {0}={1} ", a.Key, a.Value); } } var temp = "
{1}-
"; return new HtmlString(string.Format(temp, name, label , helper.ViewData["DateFrom" + name] == null ? "" : string.Format("value='{0}'", helper.ViewData["DateFrom" + name]) , helper.ViewData["DateTo" + name] == null ? "" : string.Format("value='{0}'", helper.ViewData["DateTo" + name]) , sbAttribute)); } public static IHtmlContent SearchCheckbox(this IHtmlHelper helper, string name, string label, List list) { var temp = ""; var sb = new StringBuilder(string.Format("{1}", name, label)); string[] values = null; if (helper.ViewData["Checkbox" + name] != null) { values = (helper.ViewData["Checkbox" + name] as string).Split(','); } foreach (var val in list) { var strChecked = ""; if (values != null) { foreach (var value in values) { if (value == val.Value) { strChecked = "checked='checked'"; } } } sb.AppendFormat(temp, name, val.Value, val.Text, strChecked); } return new HtmlString(sb.ToString()); } } public static class YcTemplateSearchExtensions { private static string ToHtmlString(IHtmlContent content) { using (var writer = new StringWriter()) { content.WriteTo(writer, HtmlEncoder.Default); return writer.ToString(); } } public static IHtmlContent YcAceDropdownInput(this IHtmlHelper helper, string name, string label, IList list) { return YcAceDropdownInput(helper, name, label, list, false); } public static IHtmlContent YcAceDropdownInput(this IHtmlHelper helper, string name, string label, IList list, bool appendEmptyAll = true, bool enabled = true, object htmlAttributes = null, bool multiple = true, bool searchBox = false, int dataWidth = 152) { var temp = "{1}"; if (appendEmptyAll) { if (list != null && list.Count > 0 && list[0].Text != "全部") { list.Insert(0, new SelectListItem() { Text = "全部", Value = "" }); } } object option; if (multiple) { option = new { @class = "selectpicker", multiple = "", data_live_search = "true", data_actions_box = "true", data_selected_text_format = "count > 1", data_width = $"{dataWidth}px" }; } else { option = new { @class = "selectpicker", data_live_search = "true", data_actions_box = "true", data_width = $"{dataWidth}px" }; list.Insert(0, new SelectListItem() { Text = "---", Value = "" }); } var m2 = HtmlHelperSelectExtensions.DropDownList(helper, name, list, option); if (!enabled) { var inOption = multiple ? (new { @class = "selectpicker", @disabled = "disabled", multiple = "", data_live_search = "true", data_actions_box = "true", data_selected_text_format = "count > 1", data_width = $"{dataWidth}px" }) : (object)(new { @class = "selectpicker", @disabled = "disabled", data_live_search = "true", data_actions_box = "true", data_selected_text_format = "count > 1", data_width = $"{dataWidth}px" }); m2 = HtmlHelperSelectExtensions.DropDownList(helper, name, list, inOption); } if (htmlAttributes != null) { m2 = HtmlHelperSelectExtensions.DropDownList(helper, name, list, htmlAttributes); } var m3 = new HtmlString("
" + string.Format(temp, name, label) + ToHtmlString(m2) + "
"); return m3; } public static IHtmlContent YcShortInput(this IHtmlHelper helper, string name, string label) { var temp = "
{1}
"; return new HtmlString(string.Format(temp, name, label, helper.ViewData[name] ?? "")); } public static IHtmlContent YcAceDropdownInput2(this IHtmlHelper helper, string name, string label, IList list, bool appendEmptyAll = true, string defaultvalue = "", bool enabled = true, object htmlAttributes = null, int dataWidth = 152) { var temp = "{1}"; if (appendEmptyAll) { if (list != null && list.Count > 0 && list[0].Text != "全部") { list.Insert(0, new SelectListItem() { Text = "全部", Value = "" }); } } if (!string.IsNullOrEmpty(defaultvalue)) { var dataSel = list.Where(l => l.Value == defaultvalue).FirstOrDefault(); if (dataSel != null) { dataSel.Selected = true; } } var m2 = HtmlHelperSelectExtensions.DropDownList(helper, name, list, htmlAttributes); if (htmlAttributes == null) { m2 = HtmlHelperSelectExtensions.DropDownList(helper, name, list, new { @class = "selectpicker form-control form-control-sm", data_width = $"{dataWidth}px" }); } if (!enabled) { m2 = HtmlHelperSelectExtensions.DropDownList(helper, name, list, new { @class = "selectpicker form-control form-control-sm", data_width = $"{dataWidth}px", @disabled = "disabled" }); } var m3 = new HtmlString("
" + string.Format(temp, name, label) + ToHtmlString(m2) + "
"); return m3; } public static IHtmlContent YcSearchDateRange(this IHtmlHelper helper, string name, string label) { var temp = "
{1}-
"; return new HtmlString(string.Format(temp, name, label , helper.ViewData["DateFrom" + name] == null ? "" : string.Format("value='{0}'", helper.ViewData["DateFrom" + name]) , helper.ViewData["DateTo" + name] == null ? "" : string.Format("value='{0}'", helper.ViewData["DateTo" + name]))); } } /// /// /// static class UnderlyingHelper { /// /// 从标的代码中提取品种代码 /// ^[a-z|A-Z]+(?=\d+) /// public static string GetVarietyCode(string underlyingCode) { if (string.IsNullOrWhiteSpace(underlyingCode)) { return ""; } return Regex.Match(underlyingCode, @"^[a-z|A-Z]+(?=\d+)").Value; } } public static class MyControls { public static IHtmlContent Btn(string text, string onClick, string icon = "", string id = "", string addclass = "") { var tagBuilder = new TagBuilder("button"); tagBuilder.Attributes["type"] = "button"; if (!string.IsNullOrWhiteSpace(id)) { tagBuilder.Attributes["id"] = id.Trim(); } tagBuilder.Attributes["class"] = "btn btn-primary " + addclass?.Trim(); tagBuilder.Attributes["onclick"] = onClick + ";return false;"; if (!string.IsNullOrEmpty(icon)) { tagBuilder.InnerHtml.AppendFormat("", icon); } tagBuilder.InnerHtml.Append(text); return tagBuilder; } public static IHtmlContent SearchBtn() { return new HtmlString(""); } } }