将项目添加到现有列表 mvc5

Add items to an existing list mvc5

(我是一名新开发人员)我有一个列表,我将其放入 viewBag 中以在我的视图中进行下拉,我想向该列表添加 3 个元素,以便我们可以在末尾看到它们我的下拉菜单。我为员工制作了一个时间表,我有一个该人员在一周内工作的项目的下拉列表,我想在下拉列表的末尾添加 3 个选项 "Vacancy"、"Unplanned Absence"、"Planned Absence" 如果这个人一直在休假而不是工作。

这是我对项目的要求:

var projectAssignment = (from pa in db.ProjectAssignment
                                     join p in db.Projects on pa.ProjectId equals p.ID
                                     where pa.EmployeeId == EmployeeId && pa.StartDate !=null && (pa.EndDate == null || pa.EndDate >= DateTime.Now)
                                     select new ProjectTimesheetList
                                     {
                                         ProjectName = p.ProjectName,
                                         ProjectId = pa.ProjectId
                                     });
ViewBag.ProjectTimeSHeet = projectAssignment;

这是添加我的 timehseet 的模式 我想将 3 daysoff 类型放在下拉列表的末尾,所以在这种情况下 "NatureBooker"

这是我的下拉代码:

<select name="' + row + '_' + col + '" class="custom-select" id="tsCell_' + row + '_' + col + '" data-row="' + row + '" data-col="' + col + '">' +
                    '<option value="">----Select----</option>@Html.Raw(projsStr)</select>';

解决方案:

var projectAssignment = (from pa in db.ProjectAssignment
                                     join p in db.Projects on pa.ProjectId equals p.ID
                                     where pa.EmployeeId == EmployeeId && pa.StartDate !=null && (pa.EndDate == null || pa.EndDate >= DateTime.Now)
                                     select new ProjectTimesheetList
                                     {
                                         ProjectName = p.ProjectName,
                                         ProjectId = pa.ProjectId
                                     });

            List<ProjectTimesheetList> projectAssignments = projectAssignment.ToList();

            projectAssignments.Add(new ProjectTimesheetList
            {
                ProjectName = "Vacancy",
                ProjectId = -1,
            });

            projectAssignments.Add(new ProjectTimesheetList
            {
                ProjectName = "Unplanned Absence",
                ProjectId = -2,
            });

            projectAssignments.Add(new ProjectTimesheetList
            {
                ProjectName = "Planned Absence",
                ProjectId = -3,
            });

            ViewBag.ProjectTimeSHeet = projectAssignments;

结果:

var myOptions = {
    val1 : 'Vacancy',
    val2 : 'Unplanned Absence',
    val3 : 'Planned Absence',
};
var mySelect = $('#dropdownID');
$.each(myOptions, function(val, text) {
    mySelect.append(
        $('<option></option>').val(val).html(text)
    );
});

到Javascript

  var ddl = document.getElementById("dropdownID");
   for ( let key in myOptions ) 
   {
        var option = document.createElement("OPTION");
        option.innerHTML = key
        option.value = myOptions[key]
        ddl.options.add(option);
    }

仍然不清楚你到底想要什么,但如果我的猜测是正确的,你可能想将 "fake" 项目添加到你要绑定的可枚举对象(顺便说一句,不是列表)。

只要你明白这是绝对错误的,当场被解雇的理由,就可以了:

ViewBag.ProjectTimeSHeet = projectAssignment
    .Concat(new[]
        {
            new ProjectTimesheetList
            {
                ProjectName = "Vacancy",
                ProjectId = -1,
            },
            new ProjectTimesheetList
            {
                ProjectName = "Unplanned Absence",
                ProjectId = -2,
            },
            new ProjectTimesheetList
            {
                ProjectName = "Planned Absence",
                ProjectId = -3,
            },
        });