利用DropDownList实现下拉
在视图的Model<Vo>里面我们需要使用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<T>接口类型:这个是实现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的现实要通过下面的三个步奏来实现。

其实就是前面两个步奏中的内容,下面是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" }) 来实现下拉的结果。
四:显示结果

附件:DropDownList知识参考资料 http://www.cnblogs.com/kirinboy/archive/2009/10/28/use-dropdownlist-in-asp-net-mvc.html
利用DropDownList实现下拉的更多相关文章
- Jquery实现下拉tab切换
//需求:分别点击html,css,js元素时展示对应的列表内容,其他列表内容要自动收起来 //代码如下 <!DOCTYPE html> <html lang="en&qu ...
- 利用Mahout实现在Hadoop上运行K-Means算法
利用Mahout实现在Hadoop上运行K-Means算法 一.介绍Mahout Mahout是Apache下的开源机器学习软件包,目前实现的机器学习算法主要包含有协同过滤/推荐引擎,聚类和分类三个部 ...
- autocomplete.js的使用(1):自动输入时,出现下拉选择框
autocomplete.js可以实现自动输入文本值,并出现下拉框 js引用:所需要的autocomplete文件需要在网站中自行下载. <!--自动输入文本值所需的jquery文件--> ...
- Python3 tkinter基础 Menubutton 点击按钮出现下拉菜单
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- easyui combobox下拉框复制后再禁用,点击不会出现下拉框
easyui combobox下拉框禁用,点击不会出现下拉框 需要做到,在给easyui combobox赋值后,再禁用easyui combobox 解决办法: $("#time-sele ...
- IOS开发---菜鸟学习之路--(九)-利用PullingRefreshTableView实现下拉刷新
本章主要讲解如何利用PullingRefreshTableView实现下拉(上拉)刷新的操作 PullingRefreshTableView 实现上下拉刷新的例子百度有很多,大家可以自己搜索下,先看下 ...
- 使用div 的 contenteditable属性,实现输入编辑,输入 "#" 出现下拉选择
文章原文:https://www.cnblogs.com/yalong/p/11883585.html 演示效果如下: 具体代码可以看 https://github.com/YalongYan/e ...
- 利用Swiperefreshlayout实现下拉刷新功能的技术探讨
在常见的APP中通常有着下拉页面从而达到刷新页面的功能,这种看似简单的功能有着花样繁多的实现方式.而利用Swiperefreshlayout实现下拉刷新功能则是其中比较简明扼要的一种. 一般来说,在竖 ...
- yii2框架dropDownList的下拉菜单用法介绍
Yii2.0 默认的 dropdownlist 的使用方法. 代码如下 复制代码 <?php echo $form->field($model, 'name[]')->dropDo ...
随机推荐
- Python - 升级所有已安装的第三方包
我们有时候需要把系统上已经安装的第三方的packages升级到最新版.但是easy_install和pip都没有直接的命令可以使用. 我们可以是用如下命令来查看系统上面哪些包过期了. pip list ...
- [转]移动端web页面使用字体的思考
一直不知道手机端用的什么字体,只是觉得类似雅黑,直到有一次设计师问到设计移动web页面该用什么字体才严肃地想起这个问题. 前人已栽树,后人我就直接转来吧…… 回想2年前刚开始接触手机项目,接到PSD稿 ...
- Lists in Prolog
Symbols in Prolog: atom variable number list (how to assembly and take them apart) Lists are very ...
- 使用Struts+Hibernate开发学生信息管理系统
1.项目组织结构 2.web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app vers ...
- git第一次提交代码到远程仓库
博客搬家了,本文新地址:http://www.zicheng.net/article/4 感谢支持 本操作说明是先有代码,后来创建git仓库,然后把本地代码提交到远程仓库的操作步骤: 1.初始化 在当 ...
- WebApi中直接返回json字符串的方法
[HttpPost] public HttpResponseMessage Upload() { string json = "{\"result\":\"tr ...
- 用户控件的设计要点 System.Windows.Forms.UserControl
用户控件的设计要点 最近的项目中有一个瀑布图(彩图)的功能,就是把空间和时间上的点量值以图的形式呈现出来,如下图: X坐标为空间,水平方向的一个像素代表一个空间单位(例如50米) Y坐标为时间,垂直方 ...
- android一键分享功能不使用任何第三方sdk
在android中有自带的一键分享功能,不过它会把所有带分享的应用都找出来,如果我们只需要一些常见的分享应用,该如何做呢? 下面看我的效果图(横屏和竖屏自动适配): 接下来看我的调用(支持图片和文字分 ...
- WinStore控件之Button、HyperlinkButton、RadioButton、CheckBox、progressBar、ScrollViewer、Slider
1.Button protected override void OnNavigatedTo(NavigationEventArgs e) { /* * Button - 按钮控件,其全部功能是通过其 ...
- ODAC(V9.5.15) 学习笔记(十六)直接访问模式
直接访问模式(Direct mode)是ODAC最大的特色之一,即不需要安装Oracle客户端,ODAC越过了OCI(Oracle Call Interface ),使用TCP/IP协议就可以直接与O ...