.NET MVC5专题(html扩展控件的使用)

html扩展的控件后端直接生成字符串

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;


namespace XTShop.MVC5.Utility
{
    public static class HtmlExtension
    {
        /// <summary>
        /// 自定义一个@html.Submit()
        /// </summary>
        /// <param name="helper"></param>
        /// <param name="value">value属性</param>
        /// <param name="defaultClass">预设的class</param>
        /// <returns></returns>
        public static MvcHtmlString Submit(this HtmlHelper helper, string value, string defaultClass = "btn btn-default")
        {
            var builder = new TagBuilder("input");
            builder.MergeAttribute("type", "submit");
            builder.MergeAttribute("value", value);
            builder.MergeAttribute("class", defaultClass);
            builder.ToString(TagRenderMode.EndTag);
            return MvcHtmlString.Create(builder.ToString());
        }

        /// <summary>
        /// 换行
        /// </summary>
        /// <param name="helper"></param>
        /// <returns></returns>
        public static MvcHtmlString Br(this HtmlHelper helper)
        {
            var builder = new TagBuilder("br");

            //builder.ToString(TagRenderMode.SelfClosing);//生成<br><br>
            return MvcHtmlString.Create(builder.ToString(TagRenderMode.SelfClosing));
        }

        public static MvcHtmlString Image(this HtmlHelper helper, string src, string alt, string title, object htmlAttributes, string defaultClass = "btn btn-default")
        {
            var builder = new TagBuilder("img");
            builder.MergeAttribute("src", src);
            builder.MergeAttribute("alt", alt);
            builder.MergeAttribute("title", title);
            builder.MergeAttribute("class", defaultClass);
            builder.MergeAttributes<string, object>(new RouteValueDictionary(htmlAttributes));
            return MvcHtmlString.Create(builder.ToString(TagRenderMode.SelfClosing));
        }

        public static MvcHtmlString Link(this HtmlHelper helper, string href, string linkText, string defaultClass = "btn btn-default")
        {
            var builder = new TagBuilder("a");
            builder.MergeAttribute("href", href);
            builder.SetInnerText(linkText);
            builder.MergeAttribute("class", defaultClass);
            return MvcHtmlString.Create(builder.ToString(TagRenderMode.Normal));
        }

        public static MvcHtmlString Button(this HtmlHelper helper, string id, string text, string onClick = null)
        {
            var builder = new TagBuilder("input");
            builder.GenerateId(id);
            builder.MergeAttribute("type", "button");
            builder.MergeAttribute("value", text);
            if (!string.IsNullOrWhiteSpace(onClick)) builder.MergeAttribute("onclick", onClick);
            builder.MergeAttribute("id", id);
            builder.MergeAttribute("name", id);
            return MvcHtmlString.Create(builder.ToString());
        }

        /// <summary>
        /// 一个展示当前网站的view文件的
        /// </summary>
        /// <param name="helper"></param>
        /// <returns></returns>
        public static MvcHtmlString ListViewAssemblies(this HtmlHelper helper)
        {
            TagBuilder ul = new TagBuilder("ul");
            foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies().Where(a => a.FullName.StartsWith("App_Web_")))//view编辑后生成的都是以App_Web_开头的,
            {
                TagBuilder li = new TagBuilder("li");
                li.InnerHtml = string.Format("类型完整名称:{0}", assembly.FullName);
                ul.InnerHtml += li.ToString();

                TagBuilder li2 = new TagBuilder("li");
                li2.InnerHtml = string.Format("dll地址:{0}", assembly.Location);
                ul.InnerHtml += li2.ToString();
            }
            return MvcHtmlString.Create(ul.ToString());
        }
    }
}
发布了145 篇原创文章 · 获赞 119 · 访问量 4447

猜你喜欢

转载自blog.csdn.net/weixin_41181778/article/details/103943747