利用DropDownList实现下拉

简介: 利用DropDownList实现下拉

在视图的Model里面我们需要使用IEnumerable来将别的列表的数据全部的转化为下拉列表。下面是关于在项目中实际的写法。


一:实现下拉属性列表的写法


 通过使用SelectListItem来自动填充到DropDownList中,形成下拉框。


 我们想要在前台页面将数据变为下拉就要用到DropDownList这个特性标签来实现,但是使用的前提是要在Action里面进行设置,对Value和Text进行赋值。


下面是属性的写法,是IEnumerable<>接口类型

public class CreatCustomerView
{
    public CreatCustomerView()
    {
        this.Schools = new List<SelectListItem>();
    }
    /// <summary>
    /// 外键
    /// </summary>
    [Display(Name = "学校"), Required(ErrorMessage = "不能选择为空")]
    public Guid SchoolId { get; set; }
    /// <summary>
    /// 学校的导航属性
    /// </summary>
    public IEnumerable<SelectListItem> Schools { get; set; }
    /// <summary>
    /// OpenId:跟微信绑定的唯一表示,从微信处获取
    /// </summary>
    public string OpenId { get; set; }
}

写成这样就是想将其Schools放在一个集合里面,而且在上面初始化的时候写成了SelectListItem。


  SelectListItem代表System.Web.Mvc的实例的选择项。SelectList类。这里将在Action里面进行相关的设置。


IEnumerable接口类型:这个是实现Foreach遍历所必须的,因为所有的集合和数据都继承自这个接口,并且支持非泛型方法的简单迭代,是集合访问器。定义一种扩展方法,用来对数据集合中元素进行遍历,过滤,排序,搜索等操作。



二:在Action里面的写法  



这里就是为其Value和Text进行赋值。


public ActionResult ChooseSchool()
{
     var entity = new CreatCustomerView();
     entity.Schools = _schoolService.GetAll()
             .Where(x => x.Id != Guid.Empty)
             .Select(x => new SelectListItem
              {
                  Text = x.Name,
                  Value = x.Id.ToString()
               }).ToList();
       return View(entity);
}


首先通过GetALL方法来取出数据库表中的数据,通过Select对其进行赋值,转换为ToList()的形式,在将其传到视图。这里就是为其里面赋值,为将来在前台页面进行Foreach做准备。



三:View视图里面的写法


在视图里面是通过HtmlHelper中的DropDownList来实现的,但是DropDownList的现实要通过下面的三个步奏来实现。


679140-20151020221233489-737835471.png


其实就是前面两个步奏中的内容,下面是View中的代码。


@{
    ViewBag.Title = "选择学校";
    Layout = "~/Views/Shared/_LayoutNew.cshtml";
}
@using System.Runtime.InteropServices
@model Express.Weixin.Web.Models.CreatCustomerView
<div class="header"><a href="@Url.Action("Index","Member")" class="btn btn-link btn-xs pull-left">返回</a>选择学校</div>
@using (Html.BeginForm(null, null, FormMethod.Post))
{
    <input type="hidden" value="@ViewBag.OpenId" name="OpenId" />
    <div class="col-sm-5 center" style="margin: auto;position: absolute; top: 0; left: 0; bottom: 0; right: 0; ">
        <br/><br/><br />
        @Html.LabelFor(x => x.SchoolId)
        @Html.DropDownListFor(x => x.SchoolId, Model.Schools, new { @class = "form-control" })
        @Html.ValidationMessageFor(x => x.SchoolId)
        <br/>
        <input type="submit" class="btn btn-success btn-sm btn-block" value="选择学校"/>
    </div>
}


通过里面的@Html.DropDownListFor(x => x.SchoolId, Model.Schools, new { @class = "form-control" }) 来实现下拉的结果。



四:显示结果


679140-20151020221234036-1514810138.jpg

目录
相关文章
|
存储 关系型数据库 MySQL
Easyui datagrid combobox输入框下拉(取消)选值和编辑已选值处理
Easyui datagrid combobox输入框下拉(取消)选值和编辑已选值处理
400 0
|
JSON 数据格式
EasyUI–下拉框combobox
首先声明,所谓的数据控件这一个概念,EasyUI官方应该也没这个说法。猫哥是感觉网页上经常使用的、经常需要从后台获取数据后显示到控件内部的,有这么四个:下拉框、下拉列表、树、表格。
241 0
EasyUI–下拉框combobox
|
C#
C# DataGridview控件自动下拉到最后一行
有时候使用DataGridView难免会在最后插入一条数据,如果插入的数据超过滚动条显示的行数,那么默认情况下不会显示到最后一行。增加以下代码一直将滚动条拉倒最低。 this.dataGridView1.
2627 0
|
JavaScript
easyui combobox下拉列表的多选值
html; 1 12 获取已选项集合值 js: 1 $("#btnGet").click(function () { 2 alert( $('#cc').combobox('getValues')); 3 }); 效果:   设置value值;value="12,13" 打开的时候会自动的选中。
1559 0
easyui datagrid去掉全选按钮
第一步: F12查看元素,选中全选按钮,把全选按钮的class里边加上display:none属性。找到对应的class,即.datagrid-header-check。 第二步: 在加载 表格的时候添加事件:onLoadSuccess。
1415 0
|
.NET 开发框架 JavaScript