Предисловие: предыдущая статья представляет некоторые базовые знания о инкапсулировании Bootstraphelper, и эта статья продолжает улучшаться. Ссылаясь на метод HTMLHELPER, этот блоггер сначала инкапсуляет некоторые широко используемые компоненты формы. В предыдущих комментариях было слишком много обсуждения о том, какова значимость инкапсуляции Bootstraphelper, и я не хочу слишком беспокоиться об этом. Короче говоря, у всего есть прибыль и потери, это зависит от того, как вы выбираете. Если вам интересно, вы можете посмотреть. Если вам не интересно, вы можете просто сказать «шутку» от блоггера.
Каталог статьи серии Bootstraphelper
C# Advanced Series - Инкапсулируйте свой собственный компонент HTMlHelper шаг за шагом: Bootstraphelper
C# Advanced Series - Инкапсулируйте свой собственный компонент HTMlHelper шаг за шагом: Bootstraphelper (II)
C# Advanced Series - Инкапсулируйте свой собственный компонент HTMlHelper шаг за шагом: Bootstraphelper (3: с исходным кодом)
1. Добавить новый общий Bootstraphelper
В предыдущей статье блогер определил только обычный тип Bootstraphelper, чтобы наследовать Htmlhelper. С учетом необходимости использовать Lamada для определения компонентов, блоггер добавил общий тип Bootstraphelper. Итак, Bootstraphelper стал таким.
Использование System; с использованием system.collections.generic; с использованием system.linq; с использованием system.web; с использованием system.web.mvc; с использованием system.web.routing; имена Bootstrapextensions {public class bootstraphelper: System.web.mvc.htmlhelper {/// <summary> /// Инициализируем контекст. /// </summary> /// <param name = "viewContext"> viewContainer </param> /// <param name = "viewdatacontainer"> viewdatacontainer </param> public bootstraphelper (viewContext viewContext, iviewDatacontainer): basecontext, viewDataContaner) Зачислительный класс с указанным контекстом представления, ViewDatacontainer и коллекцией маршрутов. /// </summary> /// <param name="viewContext">View context</param> /// <param name="viewDataContainer">View data container</param> /// <param name="routeCollection">Route collection</param> public BootstrapHelper(ViewContext viewContext, IViewDataContainer viewDataContainer, RouteCollection routeCollection) : base(viewContext, ViewDataContainer, RouteCollection) {}} /// <summary> /// Указывает, что элементы управления начальной загрузкой поддерживаются в сильно напечатанных представлениях. /// </summary> /// <typeparam name = "tmodel"> </typeparam> public class bootstraphelper <tmodel>: bootstraphelper {/// <summary> /// инициализируйте новый экземпляр <! [CDATA [net.web.mvc.bootstraphelper <tmodel>]>>>>>>>>>>>>>>>>>>>>>> Содержащий. /// </summary> /// <param name = "ViewContext"> View Context. </param> /// <param name = "viewDataContainer"> Просмотреть контейнер данных. </param> public BootstrapHelper(ViewContext viewContext, IViewDataContainer) : base(viewContext, viewDataContainer) { } /// <summary> /// Initialize a new instance of the <![CDATA[Net.Web.Mvc.BootstrapHelper<TModel>]]> class using the specified view context, view data container, and route collection. /// </summary> /// <param name = "ViewContext"> View Context. </param> /// <param name = "viewDataContainer"> Просмотреть контейнер данных. </param> /// <param name = "routeCollection"> Сбор маршрутов. </param> public bootstraphelper (ViewContext viewContext, iviewDataContainer viewDataContainer, RouteCollection RouteCollection): Base (ViewContext, ViewDataContainer, RouteCollection) {}}}Наш объект начальной загрузки также определяется как общий объект
Public Abstract Class BootStrapWebViewPage <Tmodel>: System.Web.mvc.webViewPage <Tmodel> {// переменные, используемые в CSHTML Page Public BootStraphelper <Tmodel> BootStrap {get; набор; } /// <summary> /// инициализировать объект Bootstrap /// </summary> public void inithelpers () {base.inithelpers (); Bootstrap = new Bootstraphelper <tmodel> (ViewContext, это); } public override void execute () {// бросить новый notimplemplementedException (); }}Значение этого - использовать @bootstrap.textboxfor (x => x.name) на странице CSHTML. Это введено позже, давайте продемонстрируем здесь предзнаменование.
2. Textboxextensions
Код реализации TextBoxExtensions.cs выглядит следующим образом:
using System;using System.Collections.Generic;using System.Linq;using System.Linq.Expressions;using System.Reflection;using System.Web;using System.Web.Mvc;using System.Web.Mvc.Html;namespace BootstrapExtensions{ /// <summary> /// bootstrap All extensions of TextBox TextBox TextBoxExtensions{ /// <summary> /// by using the specified HTML The name of the helper and form field, return the text box tag /// </summary> /// <param name="html">Extension method instance</param> /// <param name="name">The name attribute value of the form element</param> /// <returns>Return input type='text' tag</returns> public static MvcHtmlString TextBox(this BootstrapHelper html, string name) {return inputextensions.helper (html, inputtype.text, null, name, null, false, null); } /// <summary> /// By using the specified HTML The name of the helper and form field, return the text box label /// </summary> /// <param name="html">Extension method instance</param> /// <param name="id">id</param> /// <param name="name">The name attribute value of the form element</param> /// <returns>Return input type = 'text' Tag </return> public static mvchtmlString Textbox (This Bootstraphelper html, String Id, String name) {return inputextensions.helper (html, inputtype.text, идентификатор, имя, null, false, null); } /// <summary> /// Returns the text box tag by using the specified HTML helper and form field name /// </summary> /// <param name="html">Extension method instance</param> /// <param name="name">Single element name attribute value</param> /// <param name="value">Form element value</param> /// <returns>Returns input type='text' Tag </returns> public static mvchtmlString Textbox (This Bootstraphelper html, идентификатор строки, имя строки, значение объекта) {return inputextensions.helper (html, inputtype.text, id, имя, значение, false, null); } //// <summary> /// возвращает тег текстового поля с помощью указанного имени поля HTML HTML и формы /// </summary> /// <param name = "html"> Метод расширения. name="placeholder">Bootstrap's prompt input value</param> /// <returns>Return input type='text' tag</returns> public static MvcHtmlString TextBox(this BootstrapHelper html, string id, string name, object value, string placeholder) { IDictionary<string, object> attributes = new Dictionary<string, object>(); if (! String.isnullorempty (Placeholder)) {attributes.add ("Placeholder", Placeholder); } return inputextensions.helper (html, inputtype.text, id, name, value, false, attributes); } //// <summary> /// возвращает тег текстового поля с использованием указанного имени HTML HTML Helper и Form /// </summary> /// <param name = "html"> экземпляр расширенного метода </param> /// <param name = "name"> Имя одного элемента атрибут атрибут </param> /// </param = "value"> value form value <////1 <param = "value"> value form <//// <// <param </param> name = "htmlattributes"> Extra Attribute </param> /// <return> returns input type = 'text' Tag </return> public static mvChtmlString TextBox (этот Boutstraphelper html, строка, имя строки, объект, объект htmlattributes) {iditionary <string, объект> attributes = attributes = attributes = Bootstraphelper.anonymousobjecttohtmlattributes (htmlattributes); return inputextensions.helper (html, inputtype.text, id, имя, значение, false, атрибуты); } /// <summary> /// By using the specified HTML The name of the helper and form field, return the text box label /// </summary> /// <param name="html">Extension method instance</param> /// <param name="name">The name attribute value of the form element</param> /// <param name="value">The value of the form element</param> /// <param name = "Placeholder"> Приглашение входного значения текстового поля, которое поставляется с Bootstrap </param> /// <param name = "htmlattributes"> Extra Attributes </param> /// <return> return input type = 'Text' Tag </returns> public Static MvChtmling TextBox (This Boutptraphelper html, строка, строка, строка, строка, строка, строка, строка, строка, строка, строка, строка, строка, строка, строка, строка, строка, строка, строка, строка. htmlattributes) {idictionary <string, object> attributes = bootstraphelper.anonymousobjecttohtmlattributes (htmlattributes); if (! String.isnullorempty (Placeholder)) {attributes.add ("Placeholder", Placeholder); } return inputextensions.helper (html, inputtype.text, id, name, value, false, attributes); } public static mvchtmlString TextBoxfor <tmodel, tproperty> (этот Bootstraphelper <tmodel> html, Expression <func <tmodel, tproperty >> выражение) {var model = (tmodel) html.viewdata.model; String PropertyName; значение объекта; Inputextensions.getvaluebyexpression <tmodel, tproperty> (выражение, модель, out PropertyName, out Value); return inputextensions.helper (html, inputtype.text, propertyname, propertyname, value, false, null); }}}Inputextensions.cs
using System;using System.Collections.Generic;using System.Linq;using System.Linq.Expressions;using System.Reflection;using System.Web;using System.Web.Mvc;namespace BootstrapExtensions{ /// <summary> /// Bootstrap form element Input extension method collection/// </summary> public static class InputExtensions { public static MvcHtmlString Helper (Bootstraphelper html, inputtype inputtype, идентификатор строки, имя строки, значение объекта, Bool ischeck, Idictionary <String, Object> htmlattributes) {// Определите имя тега Tagbuilder Tag = new Tagbuilder ("input"); if (htmlattributes == null) {htmlattributes = new Dictionary <string, object> (); } // Добавить имя if (! String.isnullorempty (name)) {htmlattributes.add ("name", name); } // Добавить id if (! String.isnullorempty (id)) {htmlattributes.add ("id", id); } // Добавить значение if (value! = Null) {htmlattributes.add ("value", value.toString ()); } // Добавить тип ввода tag.mergeattribute ("type", htmlhelper.getinputtypestring (inputtype)); // Добавить стиль по умолчанию tag.addcssclass ("control"); tag.mergeattributes (htmlattributes); if (inputtype == inputtype.radio || inputtype == inputtype.checkbox) {if (ischeck) tag.mergeattribute ("cherced", "cherced"); } return mvchtmlString.create (tag.toString ()); } /// <summary> /// Return the form radio tag/// </summary> /// <param name="html">Extension method instance</param> /// <param name="id">id</param> /// <param name="name">name attribute</param> /// <param name="value">input value</param> /// <param name="text">Show text</param> /// <param name = "labelclass"> стиль тега метки </param> /// <param name = "ischeck"> выбран ли он </param> /// <param name = "isdisabled"> disable </param> /// <param name = "Oattributes"> Extra Tag </param> /// <saturns> return radio Tag </returns> pulart static mvcht. html, inputtype inputtype, идентификатор строки, имя строки, значение объекта, текст строки, строка labelclass, bool ischeck, bool Isdisabled, Idictionary <String, Object> htmlattributes) {// Определить имя тега Tagbuilder Tag = new Tagbuilder ("mabel"); if (! String.isnullorempty (labelclass)) {htmlattributes.add ("class", labelclass); } System.Text.StringBuilder sbinput = new System.Text.StringBuilder (); var strinputType = htmlhelper.getInputTypestring (inputType); sbinput.append ("<input type = '"). Append (StrinputType) .append ("' '"); if (! string.isnullorempty (name)) {sbinput.append ("name = '") .append (name) .append ("' '"); } if (! string.isnullorempty (id)) {sbinput.append ("id = '") .append (id) .append ("' '"); } if (value! = null) {sbinput.append ("value = '") .append (value.tostring ()). Append ("' '"); } if (ischeck) {sbinput.append ("checked = 'checked'"); } if (isdisabled) {sbinput.append ("disablet"); } sbinput.append (" />"); if (! String.isnullorempty (text)) {sbinput.append (text); } tag.innerhtml = sbinput.tostring (); tag.mergeattributes (htmlattributes); return mvchtmlstring.create (tag.tostring ()); } // Получить текущее значение свойства через выражение Public static void getValueByexpression <tmodel, tproperty> (выражение <func <tmodel, tproperty >> выражение, модель Tmodel, Out String Property -name, out Out value) {memberexpression body = (memberexpression) Expression.body; var lamadaname = (body.member is PropertyInfo)? body.member.name: null; PropertyName = lamadaname; значение = null; System.Reflection.PropertyInfo [] lstpropertyinfo = typeof (tmodel) .getProperties (BindingFlags.public | bindingflags.instance); var of ind = lstpropertyinfo.firstordefault (x => x.name == lamadaname); if (ofind! = null) {value = ofind.getValue (модель, null); }}}}1. Учитывая, что все текстовые поля текстового поля на основе начальной загрузки в проекте имеют стиль Class = "Form-Control", поэтому при инкапсулировании текстового поля он напрямую помещается в этикетку. Конечно, если ваш проект не нуждается в этом, или вы настраивали стиль текстового окна, вы также можете написать свой собственный стиль здесь, чтобы вам не нужно добавлять эти стили каждый раз, когда вы объявляете текстовое поле.
2. Метод TextBoxfor () объединяет использование LAMADA для генерации текстовых поле. Общий объект Bootstraphelper, объявленный выше, пригодится. Имя атрибута и значение атрибута в Ламаде читаются через отражение и дженерики. Здесь определено только один метод. Если требуются другие перегрузки, вы можете добавить новые методы самостоятельно.
3. Другая проблема была столкнулась при его использовании. Поскольку Bootstraphelper наследует тип HTMlHelper, некоторые из методов расширения HTMlHelper, первоначально инкапсулированных в MVC, также могут быть вызваны непосредственно для нашего объекта Bootstrap. Следовательно, многие перегрузки могут быть продублированы, и соответствующая перегрузка не может быть найдена, например:
Таким образом, следующие ошибки легко вызваны:
Итак, с тех пор, как возникает проблема, нам нужно найти способ решить это. Одним из решений, о котором думал блогер: прокомментировать пространство имен, где объект HTML в View.config. например:
Таким образом, мы можем решить вышеуказанные проблемы и запустить следующий эффект:
После комментирования вышеуказанного пространства имен мы больше не сможем использовать соответствующие методы расширения переменной HTML на странице CSHTML. Если вашего собственного помощника достаточно, это не должно быть большой проблемой без методов расширения нативных.
3. Radioextensions и FaceboxExtensions
Что касается компонентов радио и флажков в Bootstrap, блоггер упомянул метод написания на http://v3.bootcss.com/css/ и инкапсулировал его следующим образом:
Radioextensions.cs
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mvc;namespace BootstrapExtensions{ public static class RadioExtensions { /// <summary> /// Return form radio tag/// </summary> /// <param name="html">Extension method instance</param> /// <param name="name">name Атрибут </param> /// <return> return radio Tag </return> public static mvchtmlstring radio (это Bootstraphelper html, String name) {return Radio (html, null, name, null, null, null, false, false, null); } //// <summary> /// возвращает радиотерепление формы /// </summary> /// <param name = "html"> экземпляр метода расширения </param> /// <param name = "id"> id </param> /// <param name = "name"> ame attribute </param> /// <returns> return tag </returns> public static staticml html, идентификатор строки, имя строки) {return radio (html, идентификатор, имя, нулевое, ноль, ноль, нулевое, ложное, ложное, ноль); } //// <summary> /// возвращает радиотереги «Форма» /// </summary> /// <param name = "html"> экземпляр метода расширения </param> /// <param name = "id"> id </param> /// <param name = "name"> атрибут name </param> /// <param = "ischeck"> name <// rabry>/rabry nater> <//11 <//11 </// <name = "ischeck"> Tag </returns> public static mvchtmlstring radio (этот Bootstraphelper html, String Id, String name, Bool ischeck) {return radio (html, идентификатор, имя, нулевое, ноль, null, ischeck, false, null); } /// <summary> /// Return the form radio tag/// </summary> /// <param name="html">Extension method instance</param> /// <param name="id">id</param> /// <param name="name">name attribute</param> /// <param name="value">input value</param> /// <returns>Return the radio tag</returns> public static MVCHTMLSTRING RADIO (This Bootstraphelper HTML, идентификатор строки, имя строки, значение объекта) {return radio (html, идентификатор, имя, значение, нулевое, ноль, false, false, null); } /// <summary> /// Return form radio tag/// </summary> /// <param name="html">Extension method instance</param> /// <param name="id">id</param> /// <param name="name">name attribute</param> /// <param name="value">input value</param> /// <param name="text">Show text</param> /// <returns> return radio Tag </return> public static mvchtmlstring radio (этот Bootstraphelper html, идентификатор строки, имя строки, значение объекта, строка текст) {return radio (html, идентификатор, имя, значение, текст, нулевый, false, false, null); } /// <summary> /// Return form radio tag/// </summary> /// <param name="html">Extension method instance</param> /// <param name="id">id</param> /// <param name="name">name attribute</param> /// <param name="value">input value</param> /// <param name="text">Show text</param> /// <param name = "ischeck"> выбран ли он </param> /// <return> return radio Tag </return> public static mvchtmlstring radio (этот Boutstraphelper html, идентификатор строки, имя строки, значение объекта, текст строки, bool ischeck) {return radio (html, идентификатор, имя, значение, значение, налегание, inscheck, false, null); } /// <summary> /// Return form radio tag/// </summary> /// <param name="html">Extension method example</param> /// <param name="id">id</param> /// <param name="name">name attribute</param> /// <param name="value">input value</param> /// <param name="text">Show text</param> /// <param name = "labelclass"> label тег стиль </param> /// <return> return radio Tag </return> public static mvchtmlstring radio (этот Bootstraphelper html, идентификатор строки, имя строки, значение объекта, текст строки, строка labelclass) {return radio (html, id, name, value, value, labelclass, false, false, false); } /// <summary> /// Return form radio tag/// </summary> /// <param name="html">Extension method instance</param> /// <param name="id">id</param> /// <param name="name">name attribute</param> /// <param name="value">input value</param> /// <param name="text">Show text</param> /// <param name = "text"> name = "labelclass"> стиль тега метки </param> /// <param name = "ischeck"> выбирать </param> /// <return> return radio Tag </return> public static mvchtmlstring radio (этот Bootstraphelper html, строка, идентификатор строки, объект, строки, строка, строка lablasl Радио (HTML, ID, имя, значение, текст, labelclass, ischeck, false, null); } /// <summary> /// Return form radio tag/// </summary> /// <param name="html">Extension method instance</param> /// <param name="id">id</param> /// <param name="name">name attribute</param> /// <param name="value">input value</param> /// <param name="text">Show text</param> /// <param name="labelClass">Style of label</param> /// <param name="isCheck">Is it selected</param> /// <param name="isDisabled">Disable</param> /// <returns>Return radio tag</returns> public static MvcHtmlString Radio(this BootstrapHelper html, string id, string name, object value, string text, string labelClass, Bool ischeck, bool Isdisabled) {return radio (html, id, имя, значение, текст, labelclass, ischeck, isdisabled, null); } /// <summary> /// Return to form radio tag/// </summary> /// <param name="html">Extension method instance</param> /// <param name="id">id</param> /// <param name="name">name attribute</param> /// <param name="value">input value</param> /// <param name="text">display text</param> /// <param name = "labelclass"> стиль метки </param> /// <param name = "ischeck"> </param> /// <param name = "isdisabled"> disable </param> /// <param name = "oattributes"> extra tag </param> /// returns> return radio tag </returns> public static mvchtring radio ID, имя строки, значение объекта, текст строки, строка labelclass, bool ischeck, bool isdisabled, object oattributes) {Idictionary <String, Object> htmlattributes = null; if (oattributes! = null) {htmlattributes = bootstraphelper.anonymousObjectTohtmlattributes (Oattributes); } else {htmlattributes = new Dictionary <String, Object> (); } return inputextensions.checkbox (html, inputtype.radio, id, имя, значение, текст, labelclass, ischeck, isdisabled, htmlattributes); }}}Faceboxextensions.cs
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mvc;namespace BootstrapExtensions{ public static class CheckBoxExtensions { /// <summary> /// Returns the form CheckBox tag/// </summary> /// <param name="html">Extension method instance</param> /// <param name="name">name Атрибут </param> /// <return> возвращает тег флажки </return> public static mvchtmlString флажок (этот Bootstraphelper html, String name) {return fackbox (html, null, name, null, null, null, false, false, null); } //// <summary> /// возвращает тег флажки формы /// </summary> /// <param name = "html"> экземпляр метода расширения </param> /// <param name = "id"> id </param> /// <param name = "name"> name attribute </param> /// returns> return tagcebore </returns> public static mvsmling (return static sTatic -static -staticl -адрес Bootstraphelper html, идентификатор строки, имя строки) {вернуть флажки (html, идентификатор, имя, нулевое, ноль, нулевое, ложное, false, null); } //// <summary> /// возвращает тег флажки формы /// </summary> /// <param name = "html"> экземпляр метода расширения </param> /// <param name = "id"> id </param> /// <param name = "name"> name attribute <// param> /// <param name = "ischeck"> «ПАРАМЕР» <// restrybods> restrains> restrains>/// <nater>/restry name = "ischeck" Tag </returns> Public Static MvChtMlString F -флажок (этот Boutstraphelper HTML, идентификатор строки, название строки, Bool Ischeck) {вернуть флажок (HTML, идентификатор, имя, ноль, null, ischeck, false, null); } /// <summary> /// Return form CheckBox tag/// </summary> /// <param name="html">Extension method instance</param> /// <param name="id">id</param> /// <param name="name">name attribute</param> /// <param name="value">input value</param> /// <returns>Return CheckBox tag</returns> public static Флажок MVCHTMLSTRING (This Bootstraphelper HTML, идентификатор строки, имя строки, значение объекта) {вернуть флажок (HTML, идентификатор, имя, значение, нулевое, ноль, false, false, null); } /// <summary> /// Return form CheckBox tag/// </summary> /// <param name="html">Extension method instance</param> /// <param name="id">id</param> /// <param name="name">name attribute</param> //// <param name="value">input value</param> /// <param name="text">Show text</param> /// <return> вернуть флажок тег </return> public static mvchtmlString флажок (этот Bout -Sathstraphelper HTML, идентификатор строки, имя строки, значение объекта, строка текст) {вернуть флажок (html, идентификатор, имя, значение, текст, нулевой, false, false, null); } /// <summary> /// Return form CheckBox tag/// </summary> /// <param name="html">Extension method instance</param> /// <param name="id">id</param> /// <param name="name">name attribute</param> /// <param name="value">input value</param> /// <param name="text">Show text</param> /// <param name = "ischeck"> выбран ли он </param> /// <return> возвращает тег флажки </return> public static mvchtmlstring флажок (этот Bootstraphelper html, идентификатор строки, имя строки, значение объекта, текст строки, bool ischeck) {return fackbox (html, name, name, value, null, ischeck). } /// <summary> /// Return form CheckBox tag/// </summary> /// <param name="html">Extension method instance</param> /// <param name="id">id</param> /// <param name="name">name attribute</param> /// <param name="value">input value</param> /// <param name="text">Show text</param> /// <param name = "text"> name = "labelclass"> Label Tag Style </param> /// <return> return factobe tag </return> public static mvchtmlString флажки (этот Bootstraphelper HTML, идентификатор строки, имя строки, значение объекта, строка, строка LabelClass) {returnbox (html, id, name, value, value, text, label) } /// <summary> /// Return form CheckBox tag/// </summary> /// <param name="html">Extension method example</param> /// <param name="id">id</param> /// <param name="name">name attribute</param> /// <param name="value">input value</param> /// <param name="text">Show text</param> /// <param name = "labelclass"> стиль метки </param> /// <param name = "ischeck">, чтобы проверить </param> /// <return> returncebox Tag </return> public static mvchtmlstring checkebobe (этот SatchTraphelper html, String Id, String value, String, String, String Lablasl, Bool ischeckecockbox, rater -stectbox) {rater stachcebox) {rater rater). имя, значение, текст, labelclass, ischeck, false, null); } /// <summary> /// Return form CheckBox tag/// </summary> /// <param name="html">Extension method instance</param> /// <param name="id">id</param> /// <param name="name">name attribute</param> /// <param name="value">input value</param> /// <param name="text">Show text</param> /// <param name="labelClass">Style of label tag</param> /// <param name="isCheck">Is it selected</param> /// <param name="isDisabled">Disable</param> /// <returns>Return CheckBox tag</returns> public static MvcHtmlString CheckBox(this BootstrapHelper html, string id, string name, object value, string text, string labelclass, bool ischeck, bool isdisabled) {return fackbox (html, идентификатор, имя, значение, текст, labelclass, ischeck, isdisabled, null); } /// <summary> /// Return to form CheckBox tag/// </summary> /// <param name="html">Extension method instance</param> /// <param name="id">id</param> /// <param name="name">name attribute</param> /// <param name="value">input value</param> /// <param name="text">Show text</param> /// <param name = "labelclass"> стиль метки </param> /// <param name = "labelclass"> стиль метки </param> /// <param name = "ischeck"> выбран </param> /// <param name = "isdisabled"> returns <// // <param> "oattributes">/restraints <// <// <param = " TAG </returns> Общественный статический флажок MVCHTMLSTRING (этот Bootstraphelper HTML, идентификатор строки, имя строки, значение объекта, текст строки, строка LabelClass, Bool Ischeck, Bool ISdisabled, Object Oattributes) {Idictionary <String, Object> htmlattributes = null; if (oattributes! = null) {htmlattributes = bootstraphelper.anonymousObjectTohtmlattributes (Oattributes); } else {htmlattributes = new Dictionary <String, Object> (); } return inputextensions.checkbox (html, inputtype.checkbox, id, имя, значение, текст, labelclass, ischeck, isdisabled, htmlattributes); }}}Блогер собирает этикетку и флажок вместе и передает соответствующий текст метки при вызове, и использует его следующим образом:
<div> @bootstrap.radio ("aa", "bb", "cc", "dd", null, true, false, null) </div> <div> @bootstrap.radio ("fd", "cc", "cc", "ccc", "france", ",", True, false, null) @baytrap.radio ",", "dfer" ("dfer", "Dfer", "Dfer", "Dfer", "Dfer", "Dfer", "Dfer", "Dfer", "Dfer", ",", "," Dly, Null) @bootstrap.r «CC», «UK», «Radio-Line», True, False, Null) </div> <div> @bootstrap.checkbox («fd», «cc2», «cc», «France», «Флакторный флажок», True, False, null) @bootstrap.checkbox («dfer», «cc2», cc »,« uk-in steck-in »,« uk-in »,« uk-in trodkin ». @Bootstrap.checkbox («erer», «cc2», «cc», «итальянский», «флажок-вход», True, False, Null) </div>Полученные результаты:
4. ButtOnextensions
Что касается стиля Bootstrap, на официальном сайте Bootstrap есть подробные инструкции. Например, общие типы кнопок включают обычные кнопки, кнопки отправки и кнопки сброса; Общие стили кнопок в основном следующие:
Кроме того, размер кнопки также классифицируется:
На основании этого мы инкапсулировали кнопку типа начальной загрузки следующим образом
ButtOnextensions.cs
Использование System; с использованием system.collections.generic; с использованием system.linq; с использованием system.web; с использованием system.web.mvc; пространство имен Boutstrapextensions {public Static Class ButtOnextensions {/// <summary> /// Верните элемент кнопки Text Bootstrap с использованием указанного HTML HELPER и имя поля формы. /// </summary> /// <param name = "html"> экземпляр HTML Helper, расширенный этим методом. </param> /// <param name = "text"> текст, отображаемый на кнопке. </param> /// <param name = "icon"> icon css class. </param> /// <return> элемент кнопки начальной загрузки. </returns> public static mvchtmlstring кнопка (этот Bouttraphelper HTML, строка текста, значок строки) {Кнопка возврата (HTML, текст, значок, null); } /// <summary> /// Верните элемент кнопки Bootstrap, используя указанное имя HTML HTML и имя поля. /// </summary> /// <param name = "html"> экземпляр HTML Helper, расширенный этим методом. </param> /// <param name = "text"> текст, отображаемый на кнопке. </param> /// <param name = "icon"> icon css class. </param> /// <param name = "type"> Тип кнопки. </param> /// <return> элемент кнопки начальной загрузки. </returns> public static mvchtmlString кнопка (этот Bouttraphelper HTML, строковый текст, значок строки, тип путовика) {Кнопка возврата (HTML, текст, значок, тип, null); } /// <summary> /// Верните элемент кнопки Bootstrap, используя указанное имя HTML HTML и имя поля. /// </summary> /// <param name = "html"> экземпляр HTML Helper, расширенный этим методом. </param> /// <param name = "text"> текст, отображаемый на кнопке. </param> /// <param name = "icon"> icon css class. </param> /// <param name = "htmlattributes"> объект, содержащий атрибуты HTML для установки для элемента. </param> /// <return> элемент кнопки начальной загрузки. </returns> public static mvchtmlString кнопка (этот Bouttraphelper HTML, строковый текст, значок строки, объект htmlattributes) {return Cutting (html, текст, значок, buttontype.button, htmlattributes); } /// <summary> /// Верните элемент кнопки Bootstrap, используя указанное имя HTML HTML и имя поля. /// </summary> /// <param name = "html"> экземпляр HTML Helper, расширенный этим методом. </param> /// <param name = "text"> текст, отображаемый на кнопке. </param> /// <param name = "icon"> icon css class. </param> /// <param name = "type"> Тип кнопки. </param> /// <param name = "htmlattributes"> объект, содержащий атрибуты HTML для установки для элемента. </param> /// <return> элемент кнопки начальной загрузки. </returns> public static mvchtmlString кнопка (этот Bouttraphelper HTML, строка текста, значок строки, тип путовика, объект htmlattributes) {return (html, текст, значок, тип, buttonclass.default, null); } /// <summary> /// Верните элемент кнопки Bootstrap, используя указанное имя HTML HTML и имя поля. /// </summary> /// <param name = "html"> экземпляр HTML Helper, расширенный этим методом. </param> /// <param name = "text"> текст, отображаемый на кнопке. </param> /// <param name = "icon"> icon css class. </param> /// <param name = "cssclass"> стиль кнопки. </param> /// <return> элемент кнопки начальной загрузки. </returns> public static mvchtmlstring кнопка (этот Bootstraphelper HTML, строковый текст, значок строки, ButtonClass cssclass) {return (HTML, текст, значок, cssclass, null); } /// <summary> /// Верните элемент кнопки Bootstrap, используя указанное имя HTML HTML и имя поля. /// </summary> /// <param name = "html"> экземпляр HTML Helper, расширенный этим методом. </param> /// <param name = "text"> текст, отображаемый на кнопке. </param> /// <param name = "icon"> icon css class. </param> /// <param name = "cssclass"> стиль кнопки. </param> /// <param name = "htmlattributes"> объект, содержащий атрибуты HTML для установки для элемента. </param> /// <returns>A Bootstrap Button element. </returns> public static MvcHtmlString Button(this BootstrapHelper html, string text, string icon, ButtonClass cssClass, object htmlAttributes) { return Button(html, text, icon, ButtonType.Button, cssClass, null); } /// <summary> /// Return the text Bootstrap Button element by using the specified HTML helper and form field name. /// </summary> /// <param name="html">The HTML helper instance extended by this method. </param> /// <param name="text">Text displayed on the button. </param> /// <param name="icon">icon css class. </param> /// <param name="type">button type. </param> /// <param name="cssClass">Button style. </param> /// <returns>A Bootstrap Button element. </returns> public static MvcHtmlString Button(this BootstrapHelper html, string text, string icon, ButtonType type, ButtonClass cssClass) { return Button(html, text, icon, type, cssClass, null); } /// <summary> /// Return the text Bootstrap Button element by using the specified HTML helper and form field name. /// </summary> /// <param name="html">Extension method instance. </param> /// <param name="text">Text displayed on the button. </param> /// <param name="icon">icon css class. </param> /// <param name="type">button type. </param> /// <param name="cssClass">Button style. </param> /// <param name="htmlAttributes"> An object containing the HTML attributes to set for the element. </param> /// <returns>A Bootstrap Button element. </returns> public static MvcHtmlString Button(this BootstrapHelper html, string text, string icon, ButtonType type, ButtonClass cssClass, object htmlAttributes, ButtonSize size = ButtonSize.nm) { TagBuilder tag = new TagBuilder("button"); IDictionary<string, object> attributes = BootstrapHelper.AnonymousObjectToHtmlAttributes(htmlAttributes); attributes.Add("type", type.ToString().ToLower()); tag.AddCssClass("btn btn-" + cssClass.ToString().ToLower()); tag.MergeAttributes(attributes); TagBuilder span = new TagBuilder("span"); span.AddCssClass(icon.Substring(0, icon.IndexOf('-')) + " " + icon); if (size != ButtonSize.nm) { tag.AddCssClass("btn-" + size.ToString()); } span.Attributes.Add("aria-hidden", "true"); tag.InnerHtml = span.ToString() + text; return MvcHtmlString.Create(tag.ToString()); } } /// <summary> /// bootstrap button style/// </summary> public enum ButtonClass { /// <summary> /// // // </summary> Default, /// <summary> /// // // </summary> Primary, /// <summary> /// // // </summary> Success, /// <summary> /// /// </summary> Info, /// <summary> /// /// </summary> Warning, /// <summary> /// /// </summary> Danger, /// <summary> /// // // </summary> Link } /// <summary> /// bootstrap button type//// </summary> public enum ButtonType { /// <summary> /// Normal button/// </summary> Button, /// <summary> /// Submit button/// </summary> Submit, /// <summary> /// Reset button/// </summary> Reset } public enum ButtonSize { lg, nm, sm, xs }}1、将按钮的类型、样式、大小定义成了枚举类型,这样使用起来更加方便;
2、生成按钮必须的参数有text和icon,保证按钮的基本构成。
3. Используйте
<div>@Bootstrap.Button("测试按钮", "glyphicon-ok",ButtonClass.Primary)@Bootstrap.Button("提交", "glyphicon-ok", ButtonType.Submit, ButtonClass.Success, null, ButtonSize.lg) </div>五、总结
以上封装了几个常用的表单组件,还剩下几个留在下篇吧。上文只是一个初始版本,很多地方可能并不完善,如果有什么不当或者可以优化的地方,还望斧正。
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.