AceAdmin有不少Html控件,而下载下来以后所有混杂在一块儿,想用一个控件有时得调整半天,干脆整理出一个版本,并且结合起来MVC的封装。之后就不用一个js css的调了。javascript
在MVC中Html的控件有两种,一个带for一个不带for。php
@Html.TextArea:直接输出一个文本框,能够自定义输出任何内容。css
@Html.TextAreaFor:输出绑定Model的文本框。html
一、基本示例java
视图:jquery
@{
Layout = null;
}
<!DOCTYPE html> <html lang="en"> <head> <title>下拉框 - Ace Admin</title> @* 这个控制宽度(只是控制div的) *@ <link rel="stylesheet" href="/assets/css/bootstrap.min.css" /> @* 如下两个对下拉框的样式有影响 *@ <link rel="stylesheet" href="/assets/css/chosen.css" /> <link rel="stylesheet" href="/assets/css/ace.min.css" /> <link rel="stylesheet" href="/assets/css/css.css"/>
<link rel="stylesheet" href="/assets/css/font-awesome.min.css" /> <script src="/Scripts/jquery_2_1_0_min.js"></script> <!--[if IE]> <script src="/Scripts/jquery_1_11_0_min.js"></script> <![endif]--> <script src="/assets/js/chosen.jquery.min.js"></script> <script type="text/javascript"> $(function ($) { $('.chosen-select').chosen({ allow_single_deselect: true }); //窗口大小改变时,下拉框跟着缩放 $(window).on('resize.chosen', function () { var w = $('.chosen-select').parent().width(); $('.chosen-select').next().css({ 'width': w }); }).trigger('resize.chosen'); }); </script> </head> <body> <div class="modal-body"> <div class="row"> <div class="col-xs-12 col-sm-4"> <!-- Html示例 --> <select class="chosen-select" name="Hero" data-placeholder="请选择英雄..."> <option value=""></option> <!-- 默认的Text里不要放东西,不然不会选择(请选择) --> <option value="1">刘备</option> <option value="2">关羽</option> <option value="3">张飞</option> </select> <div class="space-4"></div> <!-- MVC版示例 --> @*对于AceAdmin不少-,在MVC中要用_代替*@ @Html.DropDownList("SelectListItem", null, null, new { @class = "chosen-select", data_placeholder="请选择英雄...", name = "Hero" }) </div> </div> </div> </body> </html>
后台:ajax
public ActionResult HtmlControl() { List<SelectListItem> SelectListItem = new List<SelectListItem>(); SelectListItem.Add(new SelectListItem { Text = " ", Value = "" }); SelectListItem.Add(new SelectListItem { Text = "刘备", Value = "1" }); SelectListItem.Add(new SelectListItem { Text = "关羽", Value = "2" }); SelectListItem.Add(new SelectListItem { Text = "张飞", Value = "3" }); ViewBag.SelectListItem = SelectListItem; return View(); }
另外推荐1种建立SelectList的方法,能与ORM工具比较好地结合。数据库
//模拟数据库查出来的数据 List<Person> ListPerson = new List<Person>() { new Person(){ Id = 0, Name=" " }, new Person(){ Id = 1, Name="刘备" }, new Person(){ Id = 2, Name="关羽" }, new Person(){ Id = 3, Name="张飞" } }; SelectList ListItem = new SelectList(ListPerson, "Id", "Name"); //还有第四个参数是默认选定的值 ViewBag.SelectListItem = ListItem;
若是是用SelectListItem,那么要配合Linq的Select()方法查出Text与Value编程
IEnumerable<SelectListItem> items = ListPerson.Select(item => new SelectListItem { Value = item.Id.ToString(), Text = item.Name });
二、多选bootstrap
若是是多选,只须要添加一个属性就OK了,其余彻底同样:multiple="multiple"
三、搜索框
class="form-control"与class = "chosen-select"的区别就在于有没有搜索框。
文本框的示例也有不少种:
@{
Layout = null;
}
<!DOCTYPE html> <html lang="en"> <head> <title>文本框 - Ace Admin</title> <link rel="stylesheet" href="/assets/css/bootstrap.min.css" /> <link href="/assets/css/font-awesome.min.css" rel="stylesheet" /> <link href="/assets/css/css.css" rel="stylesheet" /> <link rel="stylesheet" href="/assets/css/ace.min.css" /> <!-- 可拖动控制长度的文本框的按钮 --> <link rel="stylesheet" href="/assets/css/jquery-ui.custom.min.css" /> </head> <body> <div class="row"> <div class="col-xs-12"> <form class="form-horizontal" role="form"> <div class="form-group"> <label class="col-sm-3 control-label no-padding-right" for="form-field-1"> Text Field </label> <div class="col-sm-9"> <input type="text" id="form-field-1" placeholder="Username" class="col-xs-10 col-sm-5" /> </div> </div> <div class="form-group"> <label class="col-sm-3 control-label no-padding-right" for="form-field-1-1"> Full Length </label> <div class="col-sm-9"> <input type="text" id="form-field-1-1" placeholder="Text Field" class="form-control" /> </div> </div> <div class="space-4"></div> <div class="form-group"> <label class="col-sm-3 control-label no-padding-right" for="form-field-2"> Password Field </label> <div class="col-sm-9"> <input type="password" id="form-field-2" placeholder="Password" class="col-xs-10 col-sm-5" /> <span class="help-inline col-xs-12 col-sm-7"> <span class="middle">Inline help text</span> </span> </div> </div> <div class="space-4"></div> <div class="form-group"> <label class="col-sm-3 control-label no-padding-right" for="form-input-readonly"> Readonly field </label> <div class="col-sm-9"> <input readonly="" type="text" class="col-xs-10 col-sm-5"