将默认日期传递到下拉列表框不工作

时间:2017-01-12 18:23:30

标签: c# asp.net-mvc-4

我有一个包含以下模型的页面

@model Justice.Domain.MyClasses.Employeekronosdisplay

我正在使用下面的下拉列表

@Html.DropDownListFor(m => m.GetEmpHoursDateRange.selectedEmplhoursdate, 
                     Model.GetEmpHoursDateRange.EmphoursdateSelectList,
                     new { id = "procDateId" })        

这是我正在使用的模型

public class Employeekronosdisplay
{
    public Setemployeehoursdate GetEmpHoursDateRange { get; set; }
}

这是我用来将所有数据都添加到视图中的另一个模型。

public class Setemployeehoursdate
{
    public string selectedEmplhoursdate { get; set; }
    public IEnumerable<SelectListItem> EmphoursdateSelectList { get; set; }
}

问题:这是一个日期的下拉列表,我希望我传递给selectedEmplhoursdate属性的日期是 什么应该是我的下拉列表中的默认值。我可以毫无问题地将正确的日期传递给selectedEmplhoursdate

但是下拉列表没有显示我指定的selectedEmplhoursdate。它显示了另一个似乎是第一个的日期 我的选择列表中的项目

我该如何解决这个问题?我希望能够通过默认日期。

1 个答案:

答案 0 :(得分:0)

老实说,我从未成为Razor方法的粉丝。只是因为当您有其他数据时,您被迫将下拉数据添加到模型 - 视图 - 视图 - 模型中,因为您只能将单个模型传递给视图。

所以我个人会这样做:

<select id="Employee">
     <option>-- Please Choose --</option>
</select>

然后我会简单地使用Ajax来填充和构建下拉列表。

$(function () {
     buildDropdown($('#Employee'), '/Home/GetEmployee');
});

function buildDropdown(dropdown, action) {
     $.ajax({
         url: action,
         ...
         success: function(response) {
             var enumerable = JSON.parse(response);
             $.each(enumerable, function(index, option) {
                  dropdown.append($('<option></option>').val(option.Value).html(option.Label);
             }
         }
     });    
}

沿着这些方向的东西,这样它是可重复使用的。虽然它有点冗长。此外,当您需要设置所选值时,您可以执行:$('#Employee').val(content),将其设置为默认日期。

您的具体问题可以解决:

@Html.DropDownListFor(Model => 
     Model.Employee.Name, 
     Model.Employee.GetDateCollection, 
     Id = Model.Employee.DefaultDateRecord,
     " -- Please Choose -- ")