1.添加界面的DropDownList显示值问题
(1)在方法内添加ViewData的方法:
var ad = new UnitsRepository(); ViewData["datasourceid"] = new SelectList(ad.dsname(), "id", "dsname"); ViewData["showstyleid"] = new SelectList(ad.showstyle(), "id", "name");
从而传值到DropDownList下拉框
(2)在试图中使用DropDownList:
数据元:
@Html.DropDownList("datasourceid", ViewData["datasourceid"] as SelectList, "--请选择--", new { rows = "8", style = "224px" })
(3)按确认提交后,可使用POST表单提交方法在后台获得下拉框选取的值
2.编辑界面的DropDownList显示值与取值问题
(1)在方法内添加ViewData的方法:
1 var rep = new UnitsRepository().GetViewData(confid); 2 var ad = new UnitsRepository(); 3 ViewData["datasourceid"] = new SelectList(ad.dsname(), "id", "dsname", rep.dsname); 4 ViewData["showstyleid"] = new SelectList(ad.showstyle(), "id", "name",rep.showstylename);
1 public Units GetViewData(int config) 2 { 3 IList<Units> result1; 4 WiGetLinqDataContext db = new WiGetLinqDataContext(); 5 var res = (from user in db.ApplicationUnits 6 where user.id == config 7 select new 8 { 9 dsname = user.ApplicationDatasource == null ? "" : user.ApplicationDatasource.dsname, 10 showstylename = user.ApplicationUnitsShowStyle == null ? "" : user.ApplicationUnitsShowStyle.name, 11 }).ToList(); 12 result1 = (from u in res 13 select new Units 14 { 15 dsname = u.dsname, 16 showstylename = u.showstylename, 17 }).ToList(); 18 return result1.FirstOrDefault(); 19 }
1 public IQueryable dsname() 2 { 3 WiGetLinqDataContext db = new WiGetLinqDataContext(); 4 var dsname = from m in db.ApplicationDatasource select m; 5 return dsname; 6 }
这里需要注意的是,"SelectistListItem"和"ListBox"的继承类"SelectList"可以很好很方便的进行数值的传递,第四个参数就是为DropDownList提供默认显示值,即数据库内提取出来的值
(2)在试图中的DropDownList对应的也有默认值的显示设置:数据元:
@Html.DropDownList("datasourceid", ViewData["datasourceid"] as SelectList,Model.dsname)
因为是强类型试图,所有可以有Model,其中Model.dsname就是后台ViewData获取的SelectValue了。
2.获取多选下拉框的选项值:
@Html.DropDownList("Publishto", ViewData["Publishto"] as SelectList, "--请选择--", new { multiple = "multiple" })
其中的ViewData获取值方式和前面的单选DropDownList下拉框类似。
这里遇到的一个不同的情况是,多选项数据来自数据库表中一个对象的其中一个属性,而不是一个表的某个属性的所有对象。
这里就那该项目为例:
W,M,T分别代表:"Web平台" , "移动平台" , "客户端平台"
而这一个字符串存在一个对象的一个属性中,但是页面中显示效果为:
所以在获取数据时有所不同:
后台定义一个类和方法:
1 public class Publishto 2 { 3 public string Code { get; set; } 4 public string Name { get; set; } 5 6 7 public static List<Publishto> GetPublishtoList() 8 { 9 return new List<Publishto> 10 { 11 new Publishto { Code = "w", Name = "Web平台" }, 12 new Publishto { Code = "m", Name = "移动平台" }, 13 new Publishto { Code = "t", Name = "客户端平台" } 14 }; 15 } 16 }
分别把W,M,T赋不同的字符串,
在方法中用ViewData取值时,语法为:
ViewData["Publishto"] = new SelectList(Publishto.GetPublishtoList(), "Code", "Name");
从而是前台显示的时候为对应的字符串。
3.多选下拉框取值的问题,可以用POST表单获取数据的方式:
string Pub = Request.Form["Publishto"].ToString();
这样,字符串Pub就可以获得类似“W,M"等类型的字符串了,然后存入数据库就行了。