DropDownList对于未选择的选择

时间:2013-05-08 09:25:41

标签: c# asp.net-mvc datetime dropdownlistfor

我有一个下拉列表,其中列出了可选日期。我想预先选择一个特定的日期,但即使它被标记为“已选择”,但在查看下拉列表时它并未显示为已选择日期。

enter image description here

<%=Html.DropDownListFor(model => model.SelectDropOfDate, Model.DropOffDates, new { id = "dropOfDate" })%>

在我读过的一个帖子中,他们说“model.SelectDropOfDate”(在这种情况下)是选中的项目,如果是这种情况,我应该选择值还是文本,以使其与清单?

(the list of dates).Where(x=>x.Selected).Select(z=>z.Value).ToString();

(Ps:我已经尝试了值和文本,但没有一个工作)

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

您应该在模型上设置SelectDropOfDate属性的值,而不是相应的值(不是文本)。例如:

model.SelectDropOfDate = departureDate.ToString("d/M/yyyy", new DateTimeFormatInfo());

另请注意,该值必须具有完全匹配,以便预先选择相应的元素。

答案 1 :(得分:0)

似乎asp.mvc中的DropDownListFor有这个错误,选择&#39;不会工作我认为因为Lamda Expression的htmlhelper覆盖了所选的&#39; property。所以只需确保model.SelectDropOfDate=departureDate.ToString("d/M/yyyy", new DateTimeFormatInfo())已运行。 我在Mvc3中尝试了这个,当值真正匹配时它会选择写项目。

答案 2 :(得分:0)

我的appologies,有一个愚蠢的javascript覆盖我选择的搞砸了。我确实创建了一个测试项目来验证这里的建议,这是我发现的(对于其他读过这个帖子的人):

selectedDropOfDate不必填写,事实上,当我填写时,它根本不起作用。让List有一个标记为selected = true的项目效果不错。

示例代码

型号:

public class Home
    {
        public string Selected { get; set; }
        public List<SelectListItem> Items { get; set; }
    }

控制器:

public ActionResult Index()
        {
            var model = new Home();
            model.Items = GetItems(DateTime.Now, DateTime.Now.AddDays(3));
            return View(model);
        }

        private List<SelectListItem> GetItems(DateTime start, DateTime end)
        {
            var dates = new List<DateTime>();
            for (double i = 0; i < 100; i++)
            {
                dates.Add(start.AddDays(i + 1));
            }

            var selectList = new List<SelectListItem>();
            selectList.AddRange(dates.Select(x => new SelectListItem
            {
                Selected = x.Date == end.Date,
                Text = x.ToString("d.M.yyyy"),
                Value = x.ToString("d/M/yyyy", new DateTimeFormatInfo())
            }));

            return selectList;
        }

查看:

<%= Html.DropDownListFor(model => model.Selected, Model.Items) %>