从下拉列表中选择,选择的值是否创建另一个相同的值?

时间:2014-06-27 06:37:59

标签: asp.net asp.net-mvc-4 drop-down-menu

我使用此控制器创建了下拉列表:

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)

现在创建了这个:

enter image description here

所以这样做,当我选择一些价值,并点击搜索(发布)它保存价值,我选择,这很好,但是!

我的问题是,我想要没有选项的下拉列表&#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;然后单击搜索它执行此操作:(它将值加倍)

enter image description here

2 个答案:

答案 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是否会忽略它。