我使用此控制器创建了下拉列表:
string tmpUser = System.Web.HttpContext.Current.User.Identity.Name;
var kdoseprijavlja = (from dllist in dbContext.UsersTables
where dllist.username == tmpUser
select dllist.userID).FirstOrDefault();
var seznam = dbContext.CustomerTables.Where(m => m.UserId == kdoseprijavlja).Select(m => m.Customer);
var seznam2 = dbContext.CustomTypes.Where(m => seznam.Contains(m.Id_NewCustomerType)).Select(m => m.CustomerType);
List<string> result = new List<string>();
foreach (var customer in seznam2)
{
result.Add(customer);
}
ViewBag.DropList = new SelectList(result);
ViewBag.Destination = parameters.Destination;
在View Index中我创建了这个:
@Html.DropDownList("destination", ((SelectList)ViewBag.DropList).Select(t => new SelectListItem() { Text = t.Text, Value = t.Text, Selected = (t.Text == ViewBag.Destination) }), "--Select--", Model.Search.Destination)
现在创建了这个:
所以这样做,当我选择一些价值,并点击搜索(发布)它保存价值,我选择,这很好,但是!
我的问题是,我想要没有选项的下拉列表&#34; - 选择 - &#34;,所以第一个值将是,来自下拉列表的第一个值。我已经完成了这个,我从索引中删除了--Select--:
@Html.DropDownList("destination", ((SelectList)ViewBag.DropList).Select(t => new SelectListItem() { Text = t.Text, Value = t.Text, Selected = (t.Text == ViewBag.Destination) }), Model.Search.Destination)
从代码中删除 - 选择 - 工作,但问题是所选择的值加倍,例如,如果我选择&#34; GMTK&#34;然后单击搜索它执行此操作:(它将值加倍)
答案 0 :(得分:1)
在控制器部件中,您可以在视图包中添加所选值。
看这里http://msdn.microsoft.com/en-us/library/dd492553(v=vs.118).aspx
您要选择的值,我必须传递为selectedValue
string selectedValue = "GMTK";
ViewBag.DropList = new SelectList(result,"Id","text",selectedValue);
希望,它可能对你有所帮助。祝你今天愉快。 :)
或者在Razor中修正DropDownList的最后一部分:
@Html.DropDownList("destination", ((SelectList)ViewBag.DropList).Select(t => new SelectListItem() { Text = t.Text, Value = t.Text, Selected = (t.Text == ViewBag.Destination) }), (SelectList)ViewBag.DropList)
答案 1 :(得分:0)
如果我没错,你会尝试选择标签&#34; - 选择 - &#34;出。 通过查看API显然选项标签接受null值。你尝试过像
这样的东西吗?@Html.DropDownList("destination", ((SelectList)ViewBag.DropList).Select(t => new SelectListItem() { Text = t.Text, Value = t.Text, Selected = (t.Text == ViewBag.Destination) }), "", Model.Search.Destination)
或
@Html.DropDownList("destination", ((SelectList)ViewBag.DropList).Select(t => new SelectListItem() { Text = t.Text, Value = t.Text, Selected = (t.Text == ViewBag.Destination) }), string.Empty, Model.Search.Destination)
我无法在工作中测试它。但是我的想法是,不是删除选项标签,而是尝试传递空值或空字符串,看看API是否会忽略它。