<1>YYController 控制器
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Collections;
namespace MvcFirst.Controllers
{
public class YYController : Controller
{
//
// GET: /YY/
public ActionResult Index()
{
return View();
}
public ActionResult HttpHelper()
{
//给下拉框赋值的第一种写法
IList<SelectListItem> list = new List<SelectListItem>();
SelectListItem item1 = new SelectListItem() { Selected = false, Text = "北京", Value = "1" };
SelectListItem item2 = new SelectListItem() { Selected = false, Text = "上海", Value = "2" };
SelectListItem item3 = new SelectListItem() { Selected = false, Text = "广州", Value = "3" };
list.Add(item1);
list.Add(item2);
list.Add(item3);
ViewData["City"] = list;
//给下拉框赋值的第二种写法
ViewData["Province"] = new List<SelectListItem>(){
new SelectListItem(){Selected=true,Text="湖南",Value="hn"},
new SelectListItem(){Selected=false,Text="广东",Value="gd"},
new SelectListItem(){Selected=false,Text="江苏",Value="js"},
};
ViewData["UserName"] = "你好,中国";
return View();
}
}
}
<2>视图
<!DOCTYPE html>
<html>
<head >
<meta name="viewport" content="width=device-width" />
<title>HttpHelper</title>
</head>
<body>
<div>
<%-- ------------------------------------------------------------DropDownList下拉列表-----------------------%>
<%--这个DropDownList的name属性值为“City”,那么它就会自动去控制器里面去找Key为City的ViewData,然后将ViewData["City"]的数据往Html.DropDownList里面装配【即将ViewData["City"]的数据绑定到Html.DropDownList上来】--%>
<%:Html.DropDownList("City") %>
<%:Html.DropDownList("Province")%>
<br />
<%--因为ViewData["City"]是一个list所以不能用这种字典来取值--%>
<%--<%:ViewData["City"] %>--%>
<%-- ---------------------------------------------------------TextBox 单行文本框----------------------------%>
<%--这个TextBox的name属性值为“UserName”,那么它可以自动去控制器的里面去取key为UserName的ViewData,让后给ViewData["UserName"]的值赋给Html.TextBox()的value属性--%>
<%:Html.TextBox("UserName") %><br />
<%-- ---------------------------------------------------------TextArea 多行文本框----------------------------%>
<%--创建一个5行6列的多行文本框,文本框的默认值为"",并给它添加一个id属性并赋值为txts,同时给他添加一个class属性,因为class是MVC的关键词,所有用需要加@符号--%>
<%:Html.TextArea("txt1","",5,6,new {id="txts",@class="warning"}) %><br />
<%--如果想在表单中生成data-id=””这样的属性标签怎么办?-是C#中的特殊字符。用下划线代替所有下划线的属性都会转换为连字符--%>
<%:Html.TextArea("txt1","",5,6, new {id="txts",class="warning",data_id="123"}) %><br />
<%-- ------------------------------------------------------RadiodButton单选框----------------------%>
<%--Html.RadioButton的name属性为radio1,这三个Html.RadioButton的name属性一定要一致,才可以互斥--%>
男<%:Html.RadioButton("radio1", "男", true, new {id="la" })%>
女<%:Html.RadioButton("radio1","女",false) %>
保密<%:Html.RadioButton("radio1","保密",false)%><br />
<%-- ------------------------------------------------------CheckBox复选框----------------------%>
跑步<%:Html.CheckBox("CheckBox1",true) %>
<%--给Html.CheckBox这个复选框的name值设为CheckBox2,设为选中,并给它添加两个属性,一个属性是id,并赋值"langqiu",另外一个属性是lable,并赋值为”篮球“--%>
篮球<%:Html.CheckBox("CheckBox2", true, new { id="langqiu", lable = "篮球"})%>
骑马<%:Html.CheckBox("CheckBox3",false) %><br />
</div>
</body>
</html>
然后打开该页面的源文件看看,它们都解析成什么样了?
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>
HttpHelper
</title>
</head>
<body>
<div>
<select id="City" name="City">
<option value="1">北京</option>
<option value="2">上海</option>
<option value="3">广州</option>
</select>
<select id="Province" name="Province">
<option selected="selected" value="hn">湖南</option>
<option value="gd">广东</option>
<option value="js">江苏</option>
</select>
<br />
<input id="UserName" name="UserName" type="text" value="你好,中国" /><br />
<textarea cols="6" id="txts" name="txt1" rows="5"></textarea><br />
男<input checked="checked" id="la" name="radio1" type="radio" value="男" />
女<input id="radio1" name="radio1" type="radio" value="女" />
保密<input id="radio1" name="radio1" type="radio" value="保密" /><br />
跑步<input checked="checked" id="CheckBox1" name="CheckBox1" type="checkbox" value="true" /><input name="CheckBox1" type="hidden" value="false" />
篮球<input checked="checked" id="langqiu" lable="篮球" name="CheckBox2" type="checkbox" value="true" /><input name="CheckBox2" type="hidden" value="false" />
骑马<input id="CheckBox3" name="CheckBox3" type="checkbox" value="true" /><input name="CheckBox3" type="hidden" value="false" /><br />
</div>
</body>
</html>
================================================================================
下面我们单独来说一下下拉列表
控制器
// 测试下拉单的使用
public ActionResult TestSelect(int Id)
{
// 首先获取数据
var mySelect = (from a in db.T_User
select a).ToList() //首先从数据库中先查询出数据,转成一个list
.Select(r => new SelectListItem { Text = r.UserName, Value = r.Id.ToString() }).ToList(); //然后我们再将它转成一个新的集合
ViewData["mySelect"] = mySelect;
//在视图页面上这样用: @Html.DropDownList("mySelect")
ViewBag.mySelect = mySelect;
//是视图页面上这样用:@Html.DropDownListFor(r => r.Session, ViewBag.mySelect as IEnumerable<SelectListItem>)
return View();
}
视图
@{
ViewBag.Title = "TestSelect";
}
<h2>TestSelect</h2>
@model MvcTest.T_User
@using (Html.BeginForm())
{
<table>
<tr>
<td>@Html.DropDownList("mySelect")</td>
<td>@Html.DropDownListFor(r => r.Session, ViewBag.mySelect as IEnumerable<SelectListItem>)</td>
</tr>
<tr><td><input type="submit" value="提交" /></td></tr>
</table>
}
<script type="text/javascript">
$(function () {
alert($("#mySelect").find(":selected").val()); //获取id为mySelect的这个下拉框的”选中项“的值
})
</script>
效果图
也可以使用字典的形式
namespace itcast.crm16.Site.Areas.admin.Controllers
{
public class menusController : BaseController
{
public menusController(IsysMenusServices mser)
{
base.menuSer = mser;
}
#region 2.0 编辑
private void SetStatus()
{
//用字典的形式
Dictionary<int, string> dic = new Dictionary<int, string>();
dic.Add(0, "正常");
dic.Add(1, "停用");
SelectList clist = new SelectList(dic, "Key", "Value");
ViewBag.status = clist;
}
[HttpGet]
public ActionResult Edit(int id)
{
//直接在这里使用
SetStatus();
var model = menuSer.QueryWhere(c => c.mID == id).Select(c => c.EntityMap()).FirstOrDefault();
return View(model);
}
}
}
视图
<td>
@Html.DropDownListFor(model => model.mStatus, ViewBag.status as SelectList)
@Html.ValidationMessageFor(model => model.mStatus)
</td>
//--------------使用SelectList 和 List<SelectListItem> 方式实现下拉
控制器
public ActionResult Index()
{
List<Preson> plist = new List<Preson>() //数据源
{
new Preson(){ Id=1, Name="筱菲", Age=25},
new Preson(){ Id=2, Name="周晶", Age=27},
new Preson(){ Id=3, Name="雅林", Age=23}
};
//--------第一种,用SelectList实现下拉选项
//第一个参数:数据源,第二个参数:表示<select>的 <option>项value值,第三个参数:表示 <select>的<option>的Text文本
SelectList seList = new SelectList(plist, "Id", "Name");
//SelectList seList = new SelectList(plist, "Id", "Name",3);//这个3表示Id值为3的项被选中
ViewData["sPreson"] = seList;
//--------第二种用List<SelectListItem> 实现下拉选项
List<SelectListItem> selectListItem = new List<SelectListItem>();
foreach (var p in plist)
{
SelectListItem listitem = new SelectListItem();
listitem.Selected = (p.Id == 3); //如果Id的值为3,则选中
listitem.Value = p.Id.ToString();
listitem.Text = p.Name;
selectListItem.Add(listitem);
}
ViewData["itemPreson"] = selectListItem;
return View();
}
视图
<body>
@Html.DropDownList("sPreson")
@Html.DropDownList("itemPreson")
</body>