ASP.NET MVC中为DropDownListFor设置选中项的方法

在MVC中,当涉及到强类型编辑页,如果有select元素,需要根据当前Model的某个属性值,让Select的某项选中。本篇只整理思路,不涉及完整代码。

□ 思路

往前台视图传的类型是List<SelectListItem>,把SelectListItem选中项的Selected属性设置为true,再把该类型对象实例放到ViewBag,ViewData或Model中传递给前台视图。

通过遍历List<SelectListItem>类型对象实例

□ 控制器

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

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 = true;

    }

  }

 

  //把List<SelectListItem>集合对象实例放到ViewData中

  ViewData["somekey"] = items;

 

  //可能涉及到把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

?


1

2

3

4

5

6

public class Department

{

  public int Id {get;set;}

  public string Name {get;set;}

  public bool IsSelected {get;set;}

}

□ 控制器

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

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 = selectListItems;

 return View();

}

下面是其它网友的补充:

后台代码:

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

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"] = selec;

      return View();

    }

前端代码:

@using (Html.BeginForm()){
@Html.DropDownList("drop", ViewData["d"] as SelectList)
    <input  type="submit" value="查看对应分组列表" />
        }
        <p> 当前项目ID: @ViewData["ruturned"]</p>

时间: 2024-10-24 22:56:03

ASP.NET MVC中为DropDownListFor设置选中项的方法的相关文章

MVC中为DropDownListFor设置选中项的方法

来自森大科技官方博客http://www.cnsendblog.com/index.php/?p=137GPS平台.网站建设.软件开发.系统运维,找森大网络科技!http://cnsendnet.taobao.com 1.前端cshtml 2.新增页面-页面加载时,从数据库中加载公司信息 3.修改页面-页面加载时,从数据库中加载所有公司信息,根据选择要修改的记录行的公司ID进行判断,把该公司设置为选中 4.新增/修改 动作,应该是MVC框架封装了,提交表单的时候,自动把这个下拉框选中的Value

MVC 中@Html.DropDownListFor() 设置选中项 这么不好使 ? [问题点数:40分,结帖人lkf181]

http://bbs.csdn.net/topics/390867060 由于不知道错误原因在哪 我尽量把代码都贴出来吧:重点是:在 Controller 类里 我给 SelectListItem集合的 某项 Selected 赋值为TRUE 在视图中就应该 将该项选中吧?? 在我这怎么没还是呢? 没有任何项选中!!Controller 类: C# code ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 2

ASP.NET MVC中MaxLength特性设置无效

在ASP.NET MVC项目中,给某个Model打上了MaxLength特性如下: public class SomeClass { [MaxLength(16, ErrorMessage = "最大长度16")] public string SomeProperty{get;set;} } 但在其对应的表单元素中并没有出现类似data-val-length属性. 解决办法:使用StringLength替代MaxLength. public class SomeClass { [Str

在ASP.NET MVC中验证checkbox 必须选中 (Validation of required checkbox in Asp.Net MVC)

转载自 http://blog.degree.no/2012/03/validation-of-required-checkbox-in-asp-net-mvc/ Why would you want to have a required checkbox, i.e. a checkbox that user would have to check? Well, a typical example would be that you have some sort of terms associa

asp.net mvc中 下拉框联动效果 添加方法

首页查询第一级菜单的所有集合List,取到第一级的第一个下标,根据第一个下标查询第二级集合. 这样在页面就显示了 两个下拉select菜单,默认是从数据库查询的是第一个. 根据下拉框选择相应的第二级数据,在页面上面需要写一个ajax提交方法, $(function () { $('#sltCampus').on('change', function() { $.ajax({ type: "POST", url: '/Member/GetRestaurant', data: { camp

Asp.net MVC中1个小技巧- HTML 扩展方法 AssignIfTrue

有时需要在render页面时判断后端的一个变量是否为true/false,并使用Razor  Render为1个字符串,可以使用这个扩展方法: public static class MvcExtension { public static MvcHtmlString AssignIfTrue(this HtmlHelper helper, bool value, string assignValue) { return value ? new MvcHtmlString(assignValue

[转] ASP.NET MVC 中你必须知道的 13 个扩展点

ScottGu 在其 最新的博文 中推荐了 Simone Chiaretta 的文章 13 ASP.NET MVC extensibility points you have to know,该文章为我们简单介绍了  ASP.NET MVC  中的 13 个扩展点.Keyvan Nayyeri(与Simone合著了 Beginning ASP.NET MVC 1.0 一书)又陆续发表了一些文章,对这13个扩展点分别进行深入的讨论.我将在以后的随笔中对这些文章逐一进行翻译,希望能对大家有所帮助.

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

2016.03.04 扩展:如果 view中传入的是List<T>类型 怎么使用 DropList 既然是List<T> 那么我转化成 T  List<T>的第一个,最后一个不就是M吗? @Html.DropDownListFor(model=>model.First().Title, ViewData["Title"] as List<SelectListItem>, "标题", @"dropdown

ASP.NET MVC中设置跨域

ASP.NET MVC中设置跨域 1.什么是跨域请求 js禁止向不是当前域名的网站发起一次ajax请求,即使成功respone了数据,但是你的js仍然会报错.这是JS的同源策略限制,JS控制的并不是我们网站编程出现了问题.客户端(网页)和后台编程都可以有效解决这个问题.客户端可以通过JSONP来完成跨域访问:在ES6中为了解除同源策略问题,想出一个办法:当被请求网站为响应头respone添加了一个名为Access-Control-Allow-Origin的header,设置其值等于发起请求网站的