最近刚学习使用mvc 遇到select问题 一个页面N多项select 编辑的时候如何让他选中我们指定的值成了一个问题 当然解决方法很多 js前台绑定 或者输出html的时候循环处理 现在我们使用@Html.DropDownList 来处理这个
网上搜索了下相关的 都是基于lambda表达式写的 看了头晕 lambda表达式我也不会 所以自己参考msdn 把这个功能实现了下
实际中可能有这样一种情况 某个select 的option是数据库字典里取出来的 展示到页面上的效果 如
<select style=" 185px;" class="inputstyle1" id="ImportAmount" name="ImportAmount"> <option value="0">请选择进口额</option> <option value="1">人民币10万元以下</option> <option value="2">人民币10万元-30万元</option> <option value="3">人民币30万元-50万元</option> <option value="4">人民币50万元-100万元</option> <option value="5">人民币100万元-200万元</option> <option value="6">人民币200万元-300万元</option> <option value="7">人民币300万元-500万元</option> <option value="8" selected="selected">人民币500万元-700万元</option> <option value="9">人民币700万元-1000万元</option> <option value="10">人民币1000万元-2000万元</option> <option value="11">人民币2000万元-3000万元</option> <option value="12">人民币3000万元-5000万元</option> <option value="13">人民币5000万元-1亿元</option> <option value="14">人民币1亿元以上</option> </select>
我们可以这样写
IList<xxxx.Service.Model.DictionaryModel> certificationTypeModel = ViewData["importAmountModel"] as IList<xxxxx.Service.Model.DictionaryModel>;
Controllers
IDictionaryService IDict = new DictionaryService(); IList<DictionaryModel> importAmountModel= IDict.GetByDicType("moneyType");
view
@{
IList<xxxx.Service.Model.DictionaryModel> importAmount= ViewData["importAmountModel"] as IList<xxxx.Service.Model.DictionaryModel>;
}
<select id="ImportAmount" name="ImportAmount"> @foreach (var item in importAmount) { <option value="@item.Dickey">@item.DicName</option> } </select>
然后页面就呈现了如上的html展示页现在有问题了 如果是编辑页面我们要对这个select进行赋值选中 方法有很多 可以用js去赋值 或者在 @foreach去做个判断 如
<select id="ddlEnterpriseType" name="ddlEnterpriseType"> @foreach (ESunny.InfoPub.Service.Model.DictionaryModel item in dicEnterpriseType) { if (@Model.EnterpriseType == @item.Dickey) { <option value="@item.Dickey" selected="selected">@item.DicName</option> } else { <option value="@item.Dickey">@item.DicName</option> } } </select>
现在我们使用一个新的方法 在绑定的时候就赋值 @Html.DropDownList
Controllers
IList<DictionaryModel> ImportAmountModel = IDict.GetByDicType("ImportAmountType"); //ViewData["ImportAmountModel "] = new SelectList(ImportAmountModel , "绑定的key", "绑定的name", "这个填写要选中的值比如 model来自数据库 "); ViewData["ImportAmountModel "] = new SelectList(ImportAmountModel , "Dickey", "DicName", model.ImportAmountType);
view
//控制样式 或者id name等 参考重载方法 我们这里给这个select定义了样式class = "inputstyle1" 应为class是关键字 所以加上@符号转义下
@Html.DropDownList("actualCapitalUnit", ViewData["actualCapitalUnitModel"] as SelectList, new { @class = "inputstyle1" })
//简单点的
@Html.DropDownList("actualCapitalUnit")
最终展现的html也很干净 目的也达到了