mvc框架mvc4 dropdownlistfor 怎么绑定

ASP.NET MVC中为DropDownListFor设置选中项的方法_小组_ThinkSAAS
ASP.NET MVC中为DropDownListFor设置选中项的方法
ASP.NET MVC中为DropDownListFor设置选中项的方法
在MVC中,当涉及到强类型编辑页,如果有select元素,需要根据当前Model的某个属性值,让Select的某项选中。本篇只整理思路,不涉及完整代码。
□ 思路
往前台视图传的类型是List&SelectListItem&,把SelectListItem选中项的Selected属性设置为true,再把该类型对象实例放到ViewBag,ViewData或Model中传递给前台视图。
通过遍历List&SelectListItem&类型对象实例
□ 控制器
public ActionResult SomeAction(int id)
//从数据库获取Domain Model
var domainModel = ModelService.LoadEntities(m =& m.ID == id).FirstOrDefault&Model&();
//通过某个方法获取List&SelectListItem&类型对象实例
List&SelectListItem& items = SomeMethod();
//遍历集合,如果当前Domain model的某个属性与SelectListItem的Value属性相等,把SelectListItem的Selected属性设置为true
foreach(SelectListItem item in items)
if(item.Value == Convert.ToString(domainModel.某属性))
item.Selected =
//把List&SelectListItem&集合对象实例放到ViewData中
ViewData["somekey"] =
//可能涉及到把Domain Model转换成View Model
return PartialView(domainModel);
□ 前台视图显示
@model DomainModel 
@Html.DropDownListFor(m =& m.SomeProperty,(List&SelectListItem&)ViewData["somekey"],"==请选择==")
通过遍历Model集合
给View Model设置一个bool类型的字段,描述是否被选中。 
把Model的某些属性作为SelectListItem的Text和Value值。根据View Model中的布尔属性判断是否要把SelectListItem的Selected设置为true.
□ View Model
public class Department
public int Id {}
public string Name {}
public bool IsSelected {}
□ 控制器
public ActionResult Index()
SampleDbContext db = new SampleDbContext();
List&SelectListItem& selectListItems = new List&SelectListItem&();
//遍历Department的集合
foreach(Department department in db.Departments)
SelectListItem = new SelectListItem
Text = department.Name,
Value = department.Id.ToString(),
Selected = department.IsSelected.HasValue ? department.IsSelected.Value : false
selectListItems.Add(selectListItem);
ViewBag.Departments = selectListI
return View();
下面是其它网友的补充:
后台代码:
public ActionResult Index(FormCollection collection)
IList&Project& li = Utility.SqlHelper.getProjectList();
SelectList selec = new SelectList(li, "ID", "Name");
if (collection["drop"] != null)
string projectID = collection["drop"];
selec = new SelectList(li, "ID", "Name", projectID);//根据返回的选中项值设置选中项
ViewData["ruturned"] = collection["drop"];
ViewData["drop"] =
return View();
前端代码:
@using (Html.BeginForm()){
@Html.DropDownList("drop", ViewData["d"] as SelectList)
type="submit" value="查看对应分组列表" /&
&p& 当前项目ID: @ViewData["ruturned"]&/p&
PHP开发框架
开发工具/编程工具
服务器环境
ThinkSAAS商业授权:
ThinkSAAS为用户提供有偿个性定制开发服务
ThinkSAAS将为商业授权用户提供二次开发指导和技术支持
官方1群:【已满】
让ThinkSAAS更好,把建议拿来。
关注微信,更好学习mvc框架 dropdownlist 怎么绑定_百度知道
mvc框架 dropdownlist 怎么绑定
提问者采纳
ViewData[&MaritalStatus&quot?@HtmlC# code.MaritalStatus.DropDownListFor(model =&gt
PHP|Android|HTML5|UI|IOS培训...
主营:PHP培训,HTML5培训,UI培训,Android培训,Linux培训,iOS培训
其他类似问题
为您推荐:
mvc框架的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁mvc框架 dropdownlist 怎么绑定
[问题点数:40分]
mvc框架 dropdownlist 怎么绑定
[问题点数:40分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2012年12月 .NET技术大版内专家分月排行榜第三
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。&在Asp.Net MVC中可以用DropDownListFor的方式来让用户选择已定列表中的一个数值。用法不复杂,这里简单做一个记录。
&首先我们要定义一个 Model ,用户在 DropDownList 中选择指定的值赋给属性 ReadyTimeHour
public class EricSunModel
public string ReadyTimeHour { get; set; }
Model定义完毕之后,接下来处理Controller的逻辑
【注:这里用了ViewData来记录DropDownList中所要显示的所有列表数值】
public ActionResult EricSunAction()
EricSunModel esModel = new EricSunModel();
esModel.ReadyTimeHour = "00";
GenerateReadyTimeViewData();
return View(esModel);
private void GenerateReadyTimeViewData()
ViewData["HourList"] = GetTimeHourList();
private List&SelectListItem& GetTimeHourList()
List&SelectListItem& hourList = new List&SelectListItem&();
for (int i = 0; i & 24; i++)
if (i & 10)
hourList.Add(new SelectListItem { Text = "0" + i.ToString(), Value = "0" + i.ToString() });
hourList.Add(new SelectListItem { Text = i.ToString(), Value = i.ToString() });
return hourL
接下来我们在View中可以用下面一行代码来绑定DropDownList
【注:第一个参数为绑定Model中的属性,即--&要为此属性赋值】
【注:第二个参数为DropDownList的所有数据源】
@Html.DropDownListFor(m =& m.ReadyTimeHour, ViewData["HourList"] as List&SelectListItem&)
&截图如下所示
如果我们想在DropDownList中的最顶端添加一个默认值的话,请模仿下面的写法:添加第三个参数
@Html.DropDownListFor(m =& m.ReadyTimeHour, ViewData["HourList"] as List&SelectListItem&, "---Select---")
&截图如下所示:
这里涉及到如何缓存DropDownList的所有数值问题(特别是提交表单,验证不通过,需要再次返回本页面的情况),如下假设Model中包含属性ReadyTimeHourList(是一个List&SelectListItem&),由于页面中没有控件对此数据进行绑定,那么在提交表单之后传回给action的model中将收集不到此数值,我们用HiddenFor在页面中去缓存List的数值是不能成功的(将括号中的值换作ViewData["HourList"]也是行不通的),原因是HiddenFor只能缓存单个数值
@Html.HiddenFor(m =& m.ReadyTimeHourList)
既然用页面控件缓存的方式行不通,如果解决上述问题呢?请看如下代码,如果验证不能通过,那么需要重新绑定ViewData["HourList"]的数值
【实际上这里涉及到了ViewData生命周期的问题,由于提交表单之后,代码进入了如下的Action中,超出了原来的ViewData的声明周期,因此原来保存的ViewData的值将失效,所以需要再次的重新绑定】
[HttpPost]
public ActionResult EricSunAction(EricSunModel model)
if (!ModelState.IsValid)
GenerateReadyTimeViewData();
return View(model);
// model.ReadyTimeH
return RedirectToAction("OtherActionName");
这里提供另外的一个常用知识点:ViewBag 与 ViewData 以及&TempData 的区别。请看如下链接:
阅读(...) 评论()2063人阅读
c# mvc(85)
因为是转载文章 在此标明出处,以前有文章是转的没标明的请谅解,因为有些已经无法找到出处,或者与其它原因。
如有冒犯请联系本人,或删除,或标明出处。
因为好的文章,以前只想收藏,但连接有时候会失效,所以现在碰到好的直接转到自己这里。
如上图表示一样,在后台Control里面建一个下拉列表显示的类,然后在对应视图的control里面使用ViewData[XX]引用,最后在View视图中使用ViewData[XX] as SelectList就可以了
或者使用下面这种方法,这种一次性的也挺不错的O(∩_∩)O~
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:802613次
积分:10008
积分:10008
排名:第1118名
原创:199篇
转载:87篇
译文:27篇
评论:138条
(1)(2)(6)(1)(1)(2)(4)(6)(4)(4)(1)(3)(1)(3)(4)(4)(2)(2)(4)(3)(11)(9)(22)(15)(28)(36)(3)(1)(6)(7)(2)(19)(8)(22)(14)(22)(16)(13)}

我要回帖

更多关于 mvc4 dropdownlist 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信