一、非强类型:

第一种,还是级联

var ProductsSortList是数据库查询的List做成Json传给客户端,用jq处理<select>,但是Mvc不需要做更多的JQ工作,做成SelectListItem ,用@Html.DropDownList 和@DropDownListFor直接使用

1、JQ数据做的下拉框,基本就是传统的Select标签,借助EF强大的查询功能,客户端用jq处理ViewDATA

var ProductsSortList = OperateContext.Current.BLLSession.IProductsSortBLL.GetListBy_NoTrack(s => s.ProductsSortID > 0).Select(s => new Model.ViewModel.ProductsSort(){ProductsSortName = s.ProductsSortName,ProductsSortID = s.ProductsSortID,nodes = s.GoodsSorts.Select(t => new Model.ViewModel.GoodSort(){GoodsSortID = t.GoodsSortId,GoodsSortName = t.GoodsSortName,}).ToList()}).ToList();ViewData["ProductsSortDrop"] = Common.DataHelper.ToJSON(ProductsSortList);
<select name="ModifyProductsSort" id="ModifyProductsSort"><option value="0" selected="selected">产品一级分类</option>
</select>
<select name="ModifyGoodSort" id="ModifyGoodSort"><option value="0" selected="selected">产品二级分类</option>
</select>
3、JQ
<script type="text/javascript">function escape2Html(str) {var arrEntities = { 'lt': '<', 'gt': '>', 'nbsp': ' ', 'amp': '&', 'quot': '"' };return str.replace(/&(lt|gt|nbsp|amp|quot);/ig, function (all, t) { return arrEntities[t]; });}//下拉框联动jsvar a = '@ViewData["ProductsSortDrop"]';j = escape2Html(a);var obj = $.parseJSON(j);$(document).ready(init);function init() {$.each(obj, function (index, val) {$("<option value='" + val.ProductsSortID + "'>" + val.ProductsSortName + "</option>").appendTo($("#ModifyProductsSort"))//动态添加Option子项});$("select[name='ModifyProductsSort']").change(function () {var selectedPortsSort = $(this).val();if (selectedPortsSort == 0){$("select[name='ModifyGoodSort']").innerHTML = "";$("select[name='ModifyGoodSort']").html('<option value="产品二级分类" selected="selected">产品二级分类</option>');}//清空二级下拉框else {document.getElementById("ModifyGoodSort").innerHTML = "";ShowCityWithSelectedGoodSort(selectedPortsSort);}});}function ShowCityWithSelectedGoodSort(selectedPortsSort) {$.each(obj, function (index, val) {if (val.ProductsSortID == selectedPortsSort){$.each(val.nodes, function (i, v){$("<option value='" + v.GoodsSortID + "'>" + v.GoodsSortName + "</option>").appendTo($("select[name='ModifyGoodSort']"))})}});}
</script>

第二种,纯种MVC

Controller:var ProductsSortList是数据库查询的下拉框绑定做成SelectListItem
var ProductsSortList = OperateContext.Current.BLLSession.IProductsSortBLL.GetListBy_NoTrack(s => s.ProductsSortID > 0).Select(s => new SelectListItem(){Text = s.ProductsSortName,Value = s.ProductsSortID.ToString()});ViewData["ProductsSortDrop"] = ProductsSortList;
view:

@Html.DropDownList("ProductsSortDrop")

@Html.DropDownList("ProductsSortDrop")

还可以给其加上一个默认选项:@Html.DropDownList("ProductsSortDrop", "请选择");

二、强类型+非强类型(ViewData,并实现级联:

控制器:提供下拉框数据绑定
一个是产品一级目录ProdectsSortList得到,并在强类型中关联m => m.ProductsSortID,m => m.GoodsSortID
  var ProductsSortList = OperateContext.Current.BLLSession.IProductsSortBLL.GetListBy_NoTrack(s => s.ProductsSortID > 0).Select(s => new SelectListItem(){Text = s.ProductsSortName,Value = s.ProductsSortID.ToString()});ViewData["ProductsSortDrop"] = ProductsSortList;var GoodsSortDropList = OperateContext.Current.BLLSession.IGoodsSortBLL.GetListBy_NoTrack(s=>s.ProductsSortID==GoodsList.ProductsSortID).Select(s => new SelectListItem(){Text= s.GoodsSortName,Value = s.GoodsSortId.ToString()});ViewData["GoodsSortDrop"] = GoodsSortDropList;
view:

绑定数据来自控制器的ViewData
@Html.DropDownListFor(m => m.ProductsSortID, ViewData["ProductsSortDrop"] as IEnumerable<SelectListItem>)
 @Html.DropDownListFor(m => m.GoodsSortID, ViewData["GoodsSortDrop"] as IEnumerable<SelectListItem>)

这样Mvc提交,自动的提交两个DropDownList的ID及value值

jq级联:
<script type="text/javascript">$(document).ready(init);function init() {$("select[name='ProductsSortID']").change(function () {document.getElementById("GoodsSortID").innerHTML = "";var selectedProvince = $(this).val();ShowCityWithSelectedProvince(selectedProvince);});}function ShowCityWithSelectedProvince(province) {$.ajax({url: "@Url.Action("GoodsSortDrp", "AdminConsole")",data: { ProductsSortId: province },success: function (data) {console.log(data);$.each(data, function (i, v) {$("<option value='" + v.Value + "'>" + v.Text + "</option>").appendTo($("select[name='GoodsSortID']"))})}});}</script>

三、强类型:
DropDownListFor常用的是两个参数的重载,第一参数是生成的select的名称,第二个参数是数据,用于将绑定数据源至DropDownListFor
Modle:
   public class SettingsViewModel
   {
       Repository rp =new Repository();
       public string ListName { get; set; }  
       public  IEnumerable<SelectListItem> GetSelectList()
       {
               var selectList = rp.GetArea().Select(a => new SelectListItem { 
                               Text=a.AreaName,
                               Value=a.AreaId.ToString()
                               });
               return selectList;
           }
       } 
Controller:
       public ActionResult Index()
       {
           return View(new SettingsViewModel());
       }
View:
@model Mvc3Applicationtest2.Models.SettingsViewModel
@Html.DropDownListFor(m=>m.ListName,Model.GetSelectList(),"请选择")

转载于:https://www.cnblogs.com/cqstars/p/7294405.html

MVC Html.DropDownList 和DropDownListFor 的常用方法相关推荐

  1. 下拉框Html.DropDownList 和DropDownListFor 的常用方法

    原文地址为: 下拉框Html.DropDownList 和DropDownListFor 的常用方法 一.非强类型: Controller: ViewData["AreId"] = ...

  2. .net MVC 下拉多级联动及MVC Html.DropDownList 和DropDownListFor

    第一种方式 前台html <div style="margin:50px 0"><span>省份:</span><select id=&q ...

  3. mvc html dropdownlist,ASP.NET MVC中使用DropDownList地详解

    DropDownList控件又称下拉列表框控件,DropDownList控件动态连接到数据库,按指定 条件从数据库 中查询 出列表选项数据,然后绑 定到控件,可以方便快速地显示出多个下拉选 项 . 同 ...

  4. mvc html.dropdownlist,ASP.NET MVC4中使用Html.DropDownListFor的方法示例

    本文实例讲述了ASP.NET MVC4中使用Html.DropDownListFor的方法.分享给大家供大家参考,具体如下: 一.控制器部分: public ActionResult PageDeta ...

  5. asp.net mvc中DropDownList,CheckBox,RadioButton

    在实体User中建立selectlist的属性 public SelectList CheckBoxList { get; set; } public SelectList RadioButtonLi ...

  6. mvc html.dropdownlist onchange,JS简单操作select和dropdownlist实例

    本文实例讲述了JS简单操作select和dropdownlist的方法.分享给大家供大家参考.具体实现方法如下: 一.js选中服务器控件select与dropdownlist 1. js操作服务器控件 ...

  7. Asp.Net MVC中DropDownListFor的用法(转)

    2016.03.04 扩展:如果 view中传入的是List<T>类型 怎么使用 DropList 既然是List<T> 那么我转化成 T  List<T>的第一个 ...

  8. Asp.Net MVC中DropDownListFor的用法

    在Asp.Net MVC中可以用DropDownListFor的方式来让用户选择已定列表中的一个数值.用法不复杂,这里简单做一个记录. 首先我们要定义一个 Model ,用户在 DropDownLis ...

  9. 在ASP.NET MVC中使用DropDownList

    在ASP.NET MVC中,尽管我们可以直接在页面中编写HTML控件,并绑定控件的属性,但更方便的办法还是使用HtmlHelper中的辅助方法.在View中,包含一个类型为HtmlHelper的属性H ...

最新文章

  1. 刚刚用华为鸿蒙跑了个“hello world”!跑通后,我特么开始怀疑人生....
  2. Mobx入门之三:Provider inject
  3. WinError 145] 目录不是空的
  4. java 学习心得 (近期的)
  5. 成功解决 .Quit() File COMObject InternetExplorer.Application, line 2, in Quit pywintypes.com_error
  6. sublime text3安装python插件和flake8_让你的代码符合PEP8标准——sublime text 2 安装及使用 Python Flake8 Lint 插件...
  7. join orcl的left_oracle中left join与where
  8. font-size:100%理解
  9. swift - 根试图控制器的手势返回冲突 - push 新的tabbar控制器手势冲突
  10. 手机端双击页面放大的问题
  11. 如何在idea中使用Mybatis-generator插件快速生成代码
  12. cocos2dx中加入unzip
  13. Mike Krueger 加入Mono团队
  14. nodejs文件的读取
  15. 190728每日一句 不经一番寒彻骨 怎得梅花扑鼻香,一个人怎样保持激情去奋斗?
  16. 编程判断元素归类_编程:找出所有符合条件的元素
  17. 32个Python爬虫项目含github链接
  18. Chrome 及驱动各版本下载地址
  19. 小记(1)偷影子的人
  20. Excel在统计分析中的应用—第十章—方差分析-方差分析表

热门文章

  1. 【太阳线】级差+平级奖+加权分红源码系统 演示网站介绍
  2. ubuntu 防火墙命令整理
  3. java mdb文件_Java生成mdb文件[MS Access文件] | 學步園
  4. Linux下EPICS的安装与配置——CSS安装与配置
  5. 安装Red Giant Maxon App时提示错误11025:无法连接到Red Giant服务
  6. 太空大战--场景创建
  7. 2010国外特色电子商务网站大全
  8. [读书笔记-6] 卓有成效的管理者-有效决策
  9. 安卓系统linux启动脚本,Android开机执行脚本
  10. iPhone手机数据迁移教程