C# 常用扩展

Linq扩展(利用HashSet去重):

public static class LinqExtensions
    {

       public static IEnumerable<TSource> DistinctBy<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector)
       {
           var seenKeys = new HashSet<TKey>();

           return source.Where(element => seenKeys.Add(keySelector(element)));
       }
    }

应用:var a = alist.DistinctBy(s => s).ToList();

 

Database扩展

/// <summary>
    /// 动态查询数据
    /// </summary>
    public class DataRecordDynamicWrapper : DynamicObject {
        private IDataRecord _dataRecord;
        public DataRecordDynamicWrapper(IDataRecord dataRecord) { _dataRecord = dataRecord; }

        public override bool TryGetMember(GetMemberBinder binder, out object result) {
            result = _dataRecord[binder.Name];
            return result != null;
        }
    }

    public static class DatabaseExtensions {
        /// EF SQL 语句返回 dataTable
        /// </summary>
        /// <param name="db"></param>
        /// <param name="sql"></param>
        /// <param name="parameters"></param>
        /// <returns></returns>
        public static DataTable SqlQueryForDataTatable(this Database db,
                 string sql,
                 SqlParameter[] parameters) {

            using (SqlConnection conn = new System.Data.SqlClient.SqlConnection()) {

                conn.ConnectionString = db.Connection.ConnectionString;
                if (conn.State != ConnectionState.Open) {
                    conn.Open();
                }
                using (SqlCommand cmd = new SqlCommand()) {
                    cmd.Connection = conn;
                    cmd.CommandText = sql;
                    if (parameters != null) {
                        if (parameters.Length > 0) {
                            foreach (var item in parameters) {
                                cmd.Parameters.Add(item);
                            }
                        }
                    }
                    SqlDataAdapter adapter = new SqlDataAdapter(cmd);
                    DataTable table = new DataTable();
                    adapter.Fill(table);
                    return table;
                }
            }
        }

        /// <summary>
        /// 执行查询
        /// </summary>
        /// <param name="db"></param>
        /// <param name="commandText"></param>
        /// <param name="parameters"></param>
        /// <returns></returns>
        public static IEnumerable<dynamic> Execute(this Database db, string commandText, params object[] parameters) {
            using (var connection = new SqlConnection(db.Connection.ConnectionString)) {
                using (var command = new SqlCommand(commandText, connection)) {
                    if (connection.State != ConnectionState.Open) {
                        connection.Open();
                    }
                    if (parameters.Length > 0) {
                        foreach (var item in parameters) {
                            command.Parameters.Add(item);
                        }
                    }
                    using (SqlDataReader reader = command.ExecuteReader()) {
                        foreach (IDataRecord record in reader) {
                            yield return new DataRecordDynamicWrapper(record);
                        }
                    }
                }
            }
        }


        public static IEnumerable SqlQueryForDynamic(this Database db,
                string sql,
                params object[] parameters) {
            return Execute(db, sql, parameters);
        }


    }

Linqstring字段扩展

 /// <summary> 
    /// 扩展Linqstring字段Where条件组合
    /// </summary> 
    internal class ParameterReplacer : ExpressionVisitor {
        public ParameterReplacer (ParameterExpression paramExpr) {
            this.ParameterExpression = paramExpr;
        }

        public ParameterExpression ParameterExpression { get; private set; }

        public Expression Replace (Expression expr) {
            return this.Visit(expr);
        }

        protected override Expression VisitParameter (ParameterExpression p) {
            return this.ParameterExpression;
        }
    }

    /// <summary>
    /// 扩展Linqstring字段Where条件组合
    /// </summary>
    public static class PredicateExtensionses {
        public static Expression<Func<T, bool>> True<T> () { return f => true; }

        public static Expression<Func<T, bool>> False<T> () { return f => false; }

        public static Expression<Func<T, bool>> And<T> (this Expression<Func<T, bool>> exp_left, Expression<Func<T, bool>> exp_right) {
            var candidateExpr = Expression.Parameter(typeof(T), "candidate");
            var parameterReplacer = new ParameterReplacer(candidateExpr);

            var left = parameterReplacer.Replace(exp_left.Body);
            var right = parameterReplacer.Replace(exp_right.Body);
            var body = Expression.And(left, right);

            return Expression.Lambda<Func<T, bool>>(body, candidateExpr);
        }
        
        public static Expression<Func<T, bool>> Or<T> (this Expression<Func<T, bool>> exp_left, Expression<Func<T, bool>> exp_right) {
            var candidateExpr = Expression.Parameter(typeof(T), "candidate");
            var parameterReplacer = new ParameterReplacer(candidateExpr);

            var left = parameterReplacer.Replace(exp_left.Body);
            var right = parameterReplacer.Replace(exp_right.Body);
            var body = Expression.Or(left, right);

            return Expression.Lambda<Func<T, bool>>(body, candidateExpr);
        }


        /// <summary>
        ///   使之支持Sql in语法
        /// </summary>
        /// <typeparam name = "T"></typeparam>
        /// <typeparam name = "TValue"></typeparam>
        /// <param name = "query"></param>
        /// <param name = "obj"></param>
        /// <param name = "values"></param>
        /// <returns></returns>
        public static IQueryable<T> WhereIn<T, TValue> (this IQueryable<T> query, Expression<Func<T, TValue>> obj, IEnumerable<TValue> values) {
            return query.Where(BuildWhereInExpression(obj, values));
        }

        private static Expression<Func<TElement, bool>> BuildWhereInExpression<TElement, TValue> (Expression<Func<TElement, TValue>> propertySelector, IEnumerable<TValue> values) {
            ParameterExpression p = propertySelector.Parameters.Single();
            if (!values.Any())
                return e => false;

            var equals = values.Select(value => (Expression)Expression.Equal(propertySelector.Body, Expression.Constant(value, typeof(TValue))));
            var body = equals.Aggregate<Expression>((accumulate, equal) => Expression.Or(accumulate, equal));

            return Expression.Lambda<Func<TElement, bool>>(body, p);
        }
    }

应用:where.And(s => s.account == vAddMoney.account);

where.Or(p => p.msg.Contains(tborder));

 

对string,object,type等的扩展

/// <summary>
    /// 专门处理扩张方法类
    /// </summary>
    public static class ExtensionHelper {

        /// <summary>
        /// 扩张方法 转换字符串默认为 ""
        /// </summary>
        /// <returns></returns>
        public static string ToEString(this object s) {
            if (s == null) {
                return "";
            } else {
                return s.ToString();
            }
        }

        /// <summary>
        /// 扩张方法 转换字符串默认为 ""
        /// </summary>
        /// <returns></returns>
        public static string ToEString(this object s ,string defaultStr) {
            if (s == null) {
                return defaultStr;
            } else {
                return s.ToString();
            }
        }

        /// <summary>
        /// 扩张方法 转换bool
        /// </summary>
        /// <returns></returns>
        public static bool ToEBoolean(this object s) {
            if (s == null) {
                return false;
            } else {
                return Convert.ToBoolean(s);
            }
        }

        /// <summary>
        /// 字符串截取从第一位截取
        /// </summary>
        /// <returns></returns>
        public static string ESubStart(this object s ,int length) {
            string temp = s.ToEString();
            if (temp.Length <= length) {
                return temp;
            } else {
                return temp.Substring(0 ,length);
            }
        }

        /// <summary>
        /// 字符串截取从第一位截取
        /// </summary>
        /// <returns></returns>
        public static string ESubEnd(this object s ,int length) {
            string temp = s.ToEString();
            if (temp.Length <= length) {
                return temp;
            } else {
                return temp.Substring(temp.Length - length ,length);
            }
        }

        /// <summary>
        /// 判断字符串或对象是否为空或null
        /// </summary>
        /// <returns></returns>
        public static bool IsNullOrEmpty(this object s) {
            if (s == null) {
                return true;
            } else {
                return string.IsNullOrEmpty(s.ToEString().Trim());
            }
        }

        /// <summary>
        /// 给前端展示的保留小数用
        /// </summary>
        /// <returns></returns>
        public static string ToMoney(this decimal? s) {
            if (s == null) {
                return Decimal.Parse("0").ToString("f2");
            } else {
                return Decimal.Parse(s.ToEString()).ToString("f2");
            }
        }

        public static string ToStringDigit(this object s,string x) {
            if (s != null) {
                decimal t = 0;
                if (decimal.TryParse(s.ToString(), out t)) {
                    return x == "f2" ? t.ToString("f2") : t.ToString("0");
                } else return s.ToString();
            } else return "";
            //return x == "f2" ? Decimal.Parse("0").ToString("f2") : "0";
        }

        /// <summary>
        /// 给前端展示的保留小数用
        /// </summary>
        /// <returns></returns>
        public static string ToMoney(this decimal s) {
            return s.ToString("f2");
        }

        /// <summary>
        /// 转换 int  默认为 0
        /// </summary>
        /// <param name="t"></param>
        /// <returns></returns>
        public static int ToEInt(this object t) {
            if (t == null) {
                return 0;
            } else {
                try {
                    return Convert.ToInt32(t);
                } catch {
                    return 0;
                }

            }
        }

        public static long ToLong(this object t) {
            if (t == null) {
                return 0;
            } else {
                try {
                    return Convert.ToInt64(t);
                } catch {
                    return 0;
                }
            }
        }

        /// <summary>
        /// 转换 Short  默认为 0
        /// </summary>
        /// <param name="t"></param>
        /// <returns></returns>
        public static short ToEShort(this object t) {
            if (t == null) {
                return 0;
            } else {
                return Convert.ToInt16(t);
            }
        }

        /// <summary>
        /// 转换 byte  默认为 0
        /// </summary>
        /// <param name="t"></param>
        /// <returns></returns>
        public static byte ToEByte(this object t) {
            if (t == null) {
                return 0;
            } else {
                return Convert.ToByte(t.ToString());
            }
        }

        /// <summary>
        /// 转换 DateTime  默认为 DateTime.MinValue
        /// </summary>
        /// <param name="t"></param>
        /// <returns></returns>
        public static DateTime ToEDate(this object t) {
            if (t == null) {
                return DateTime.MinValue;
            } else {
                return DateTime.Parse(t.ToEString());
            }
        }

        /// <summary>
        /// 转换 DateTime  默认为 DateTime.MinValue
        /// </summary>
        /// <param name="t"></param>
        /// <returns></returns>
        public static string ToEShortDate(this object t) {
            if (t == null) {
                return DateTime.MinValue.ToString("yyyy-MM-dd");
            } else {
                return DateTime.Parse(t.ToEString()).ToString("yyyy-MM-dd");
            }
        }


        /// <summary>
        /// 转换 DateTime  默认为 DateTime.MinValue
        /// </summary>
        /// <param name="t"></param>
        /// <returns></returns>
        public static DateTime ToEDateFormat(this DateTime? t) {
            return DateTime.Parse(t.ToEDate().ToString("yyyy-MM-dd HH:mm:ss"));
        }

        /// <summary>
        /// 转换 Decimal  默认为 0;
        /// </summary>
        /// <param name="t"></param>
        /// <returns></returns>
        public static Decimal ToEDecimal(this object t) {
            if (t == null) {
                return 0;
            } else {
                try {
                    return decimal.Parse(t.ToEString());
                } catch {
                    return 0;
                }
            }
        }

        /// <summary>
        /// 转换 Double  默认为 0;
        /// </summary>
        /// <param name="t"></param>
        /// <returns></returns>
        public static Double ToEDouble(this object t) {
            if (t == null) {
                return 0;
            } else {
                try {
                    return double.Parse(t.ToEString());
                } catch {
                    return 0;
                }
            }
        }


        /// <summary>
        /// 转换 MD5加密  默认为 0;
        /// </summary>
        /// <param name="t"></param>
        /// <returns></returns>
        public static string ToEMD5(this object t) {
            if (t == null) {
                return null;
            } else {
                string input = t.ToEString();
                return EncodingHelper.MD5Encrypt(input).ToUpper();
            }
        }

        /// <summary>  
        /// 非法字符转换  
        /// </summary>  
        /// <param name="str"></param>  
        /// <returns></returns>  
        public static bool IsHasCheckVar(this object t) {
            string input = t.ToEString().Trim();
            string checkvar = "`";:%☆?!〈(&#";
            foreach (char c in checkvar) {
                if (input.Contains(c))
                    return true;
            }
            return false;
        }

        /// <summary>  
        /// 清除短信商认定的敏感词 
        /// 说明: 不同短信商可能规则不同,更换短信商时,这里可以对应调整。
        /// </summary>  
        /// <param name="str"></param>  
        /// <returns></returns>  
        public static string FilterSensitiveWords(this object t) {
            List<string> SensitiveWordsForReplace = new List<string>() { "移动" ,"独立" ,"礼" ,"特价" ,"上市" ,"居" ,"享受" ,"制服" ,"骗子" ,"生肖" ,"屌" ,"咪咪" ,"骚" ,"师傅" ,"【" ,"】" };
            List<string> SensitiveWordsForSeprate = new List<string>() { "台湾" ,"代理" ,"大师" ,"广告" ,"黄色" ,"丝袜" ,"色男" ,"SB" ,"茉莉花" ,"花花公子" ,"发票" ,"三点" };
            string input = t.ToEString().Trim();

            foreach (string r in SensitiveWordsForReplace) {
                input = input.Replace(r ,"");
            }
            foreach (string s in SensitiveWordsForReplace) {
                var news = s.ToList();
                news.Insert(1 ,' ');
                input = input.Replace(s ,string.Join(" " ,news.ToArray()));
            }
            return input;
        }

        /// <summary>
        /// 枚举转 ArrayList
        /// </summary>
        /// <param name="enumType"> typeof(枚举)</param>
        /// <returns></returns>
        public static IList ToList(this Type enumType) {
            ArrayList list = new ArrayList();
            foreach (int item in Enum.GetValues(enumType)) {
                list.Add(Enum.GetName(enumType ,item));
            }
            return list;
        }

        /// <summary>
        /// 枚举转  Dictionary
        /// </summary>
        /// <param name="enumType"></param>
        /// <returns></returns>
        public static Dictionary<string ,string> ToDictionary(this Type enumType) {
            Dictionary<string ,string> list = new Dictionary<string ,string>();
            foreach (int item in Enum.GetValues(enumType)) {
                list.Add(Enum.GetName(enumType ,item) ,item.ToEString());
            }
            return list;
        }

        /// <summary>
        /// 扩张方法 转换字符串默认为 ""
        /// </summary>
        /// <returns></returns>
        public static string ToMaskString(this object s) {
            string str = s.ToEString();
            if (string.IsNullOrEmpty(str)) {
                return "";
            } else {

                if (RegularValidateHelper.IsMobilePhoneNumber(str) && str.Length == 11) {
                    return str.Substring(0 ,3) + "****" + str.Substring(7 ,4);
                } else {
                    if (str.Length == 2) {
                        return str.Substring(0 ,1) + GetMask(1);
                    }
                    if (str.Length > 2) {

                        return str.Substring(0 ,1) + GetMask(str.Length - 2) + str.Substring(str.Length - 1 ,1);
                    }
                }
                return s.ToString();
            }
        }

        private static string GetMask(int length) {
            string str = "";
            for (int i = 0 ; i < length ; i++) {
                str += "*";
            }
            return str;
        }

        /// <summary>
        /// 验证是否特殊用户【内部用户】
        /// </summary>
        /// <param name="username"></param>
        /// <returns></returns>
        public static bool SpecialUser(string username) {
            var ret = false;
            var regStr = @"^(13[6-9]0000\d{4}|[a-z]+)$";
            if (RegularValidateHelper.IsMatch(username ,regStr)) {
                ret = true;
            }
            return ret;
        }
    }

HtmlHelper扩展

public static class HtmlActionLink {

        #region 普通链接扩展方法
        /// <summary>
        /// 当前 controllerName 页面链接相关操
        /// </summary>
        /// <param name="htmlHelper"></param>
        /// <param name="linkText"></param>
        /// <param name="actionName"></param>
        /// <param name="htmlAttributes"></param>
        /// <returns></returns>
        public static MvcHtmlString InkindActionLink(this HtmlHelper htmlHelper, string linkText, string actionName,
            object htmlAttributes) {
            return htmlHelper.InkindActionLink(linkText, actionName,
                null, htmlAttributes);
        }

        /// <summary>
        /// 无参数
        /// </summary>
        /// <param name="htmlHelper"></param>
        /// <param name="linkText"></param>
        /// <param name="actionName"></param>
        /// <param name="controllerName"></param>
        /// <param name="htmlAttributes"></param>
        /// <returns></returns>
        public static MvcHtmlString InkindActionLink(this HtmlHelper htmlHelper, string linkText, string actionName,
            string controllerName, object htmlAttributes) {
            return htmlHelper.InkindActionLink(linkText, actionName, controllerName, null, htmlAttributes);
        }

        /// <summary>
        /// 带 地址参数
        /// </summary>
        /// <param name="htmlHelper"></param>
        /// <param name="linkText"></param>
        /// <param name="actionName"></param>
        /// <param name="routeValues"></param>
        /// <param name="htmlAttributes"></param>
        /// <returns></returns>
        public static MvcHtmlString InkindActionLink(this HtmlHelper htmlHelper, string linkText, string actionName,
           object routeValues, object htmlAttributes) {
            return htmlHelper.InkindActionLink(linkText, actionName, null, routeValues, htmlAttributes);
        }



        /// <summary>
        /// 新 controllerName 页面链接
        /// </summary>
        /// <param name="htmlHelper"></param>
        /// <param name="linkText">@不编码</param>
        /// <param name="actionName"></param>
        /// <param name="controllerName"></param>
        /// <param name="htmlAttributes"></param>
        /// <returns></returns>
        public static MvcHtmlString InkindActionLink(this HtmlHelper htmlHelper, string linkText, string actionName,
            string controllerName, object routeValues, object htmlAttributes) {

            if (!CheckPower(actionName, controllerName)) {
                return new MvcHtmlString("");
            }

            linkText = linkText.ToEString().Trim();
            string htmlText = "";
            if (linkText.StartsWith("@")) {
                htmlText = "@@@@";
            }
            else {
                htmlText = linkText;
            }
            if (htmlAttributes != null && htmlAttributes.ToString().Contains("replacehref")) {
                actionName = string.Empty;
                controllerName = string.Empty;
            }
            if (string.IsNullOrEmpty(htmlText)) {
                htmlText = " ";
            }
            string htmlString = htmlHelper.ActionLink(htmlText, actionName,
               controllerName, routeValues, htmlAttributes).ToHtmlString().ToString()
                .Replace("dataopeniframe", "data-open-iframe");
            if (linkText.StartsWith("@")) {
                htmlString = htmlString.Replace("@@@@", linkText.Substring(1, linkText.Length - 1));
            }
            if (htmlAttributes != null && htmlAttributes.ToString().Contains("replacehref")) {
                htmlString = htmlString.Replace("href=\"/\"", string.Empty);
                htmlString = htmlString.Replace("replacehref", "href");
            }
            return new MvcHtmlString(htmlString);
        }
        #endregion

        /// <summary>
        /// 判断权限
        /// </summary>
        /// <returns></returns>
        public static bool CheckPower(string actionName, string controllerName) {

            if (string.IsNullOrEmpty(controllerName)) {
                string redirectOnSuccess = HttpContext.Current.Request.Url.AbsolutePath;
                string[] localPathArr = redirectOnSuccess.Split('/');
                if (localPathArr.Length - 2 > 0) {
                    controllerName = localPathArr[localPathArr.Length - 2];
                }
                else {
                    controllerName = "Home";
                }
            }

            //登录默认就可以拥有的权限
            List<string> powerlist = new List<string> { 
                "account/logout",
                "home/index",
                "statistic/getsalescount",
                "user/deltaobaoshopbind",
                "good/taobaodatadatail",
				"good/gettaobaogoods",
				"good/listdata",
                "site/getalltitle",
                "finance/addmoneyeditadds",
                "notice/sendmessage",
                 "marketing/upLoad",
                 //"order/getorderlog",  //订单详情页面下部日志用ajax加载
                "train/gettraincurriculumforselectlist", //店宝宝培训 课程下拉框数据
                "train/gettraincurriculumseriesforselectlist",//店宝宝培训 系列下拉框数据
                "site/getmodulebytitle",
                "home/upload",
                //智齿
                "customerservice/getsobotacount",
                "customerservice/getuserinfo"
            };
            VUser user = HttpContext.Current.Session["userinfo"] as VUser;

            if (user == null) {
                return false;
            }
            else {
                //pass 登录相关
                if (powerlist.Where(s => s.ToLower() == (controllerName + "/" + actionName).ToLower()).Any()) {
                    return true;
                }
                List<VUserPowerList> powerList = user.PowerList;

                if (powerList == null) {
                    return false;
                }
                string roules = (controllerName + "/" + actionName).ToLower().Trim();
                //没有权限直接不反馈任何东西

                return powerList.Where(p => p.Roules == roules && p.Roules != null).Any();
            }

        }

        #region ajax 链接

        /// <summary>
        /// 
        /// </summary>
        /// <param name="ajaxHelper"></param>
        /// <param name="linkText"></param>
        /// <param name="actionName"></param>
        /// <param name="controllerName"></param>
        /// <param name="ajaxOptions"></param>
        /// <param name="htmlAttributes"></param>
        /// <returns></returns>

        public static MvcHtmlString InkindActionLink(this AjaxHelper ajaxHelper, string linkText, string actionName,
         string controllerName, AjaxOptions ajaxOptions, object htmlAttributes) {
            return ajaxHelper.InkindActionLink(linkText, actionName, controllerName, null, ajaxOptions, htmlAttributes);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="ajaxHelper"></param>
        /// <param name="linkText">@不编码</param>
        /// <param name="actionName"></param>
        /// <param name="ajaxOptions"></param>
        /// <param name="htmlAttributes"></param>
        /// <returns></returns>
        public static MvcHtmlString InkindActionLink(this AjaxHelper ajaxHelper, string linkText, string actionName,
            AjaxOptions ajaxOptions, object htmlAttributes) {
            return ajaxHelper.InkindActionLink(linkText, actionName, "", ajaxOptions, htmlAttributes);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="ajaxHelper"></param>
        /// <param name="linkText">@不编码</param>
        /// <param name="actionName"></param>
        /// <param name="ajaxOptions"></param>
        /// <returns></returns>

        public static MvcHtmlString InkindActionLink(this AjaxHelper ajaxHelper, string linkText, string actionName,
            AjaxOptions ajaxOptions) {
            return ajaxHelper.InkindActionLink(linkText, actionName, "", ajaxOptions, null);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="ajaxHelper"></param>
        /// <param name="linkText">@不编码</param>
        /// <param name="actionName"></param>
        /// <param name="controllerName"></param>
        /// <param name="ajaxOptions"></param>
        /// <returns></returns>
        public static MvcHtmlString InkindActionLink(this AjaxHelper ajaxHelper, string linkText, string actionName,
            string controllerName, AjaxOptions ajaxOptions) {
            return ajaxHelper.InkindActionLink(linkText, actionName, controllerName, ajaxOptions, null);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="ajaxHelper"></param>
        /// <param name="linkText"></param>
        /// <param name="actionName"></param>
        /// <param name="routeValues"></param>
        /// <param name="ajaxOptions"></param>
        /// <param name="htmlAttributes"></param>
        /// <returns></returns>
        public static MvcHtmlString InkindActionLink(this AjaxHelper ajaxHelper, string linkText, string actionName,
            object routeValues, AjaxOptions ajaxOptions, object htmlAttributes) {
            return ajaxHelper.InkindActionLink(linkText, actionName, null, routeValues, ajaxOptions, htmlAttributes);
        }

        /// <summary>
        /// 最全的重载
        /// </summary>
        /// <param name="ajaxHelper"></param>
        /// <param name="linkText"></param>
        /// <param name="actionName"></param>
        /// <param name="controllerName"></param>
        /// <param name="ajaxOptions"></param>
        /// <param name="htmlAttributes"></param>
        /// <returns></returns>
        public static MvcHtmlString InkindActionLink(this AjaxHelper ajaxHelper, string linkText, string actionName,
            string controllerName, object routeValues, AjaxOptions ajaxOptions, object htmlAttributes) {

            if (!CheckPower(actionName, controllerName)) {
                return new MvcHtmlString("");
            }

            linkText = linkText.ToEString().Trim();
            string htmlText = "";
            if (linkText.StartsWith("@")) {
                htmlText = "@@@@";
            }
            else {
                htmlText = linkText;
            }
            string htmlString = ajaxHelper.ActionLink(htmlText, actionName, controllerName, routeValues, ajaxOptions, htmlAttributes)
                                          .ToHtmlString().ToString();
            if (linkText.StartsWith("@")) {
                htmlString = htmlString.Replace("@@@@", linkText.Substring(1, linkText.Length - 1));
            }
            return new MvcHtmlString(htmlString);
        }

        #endregion

    }

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

笑羽酣天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值