gpt4 book ai didi

Razor, MVC4, @html.dropdownlistfor 问题

转载 作者:行者123 更新时间:2023-12-04 16:23:25 25 4
gpt4 key购买 nike

我正在尝试创建一个从数据库填充的下拉列表。我有:

public class Employee
{
[Key]
public int Id { get; set; }
[Required]
public String FirstName { get; set; }
[Required]
public String LastName { get; set; }
[Required]
public String JobTitle { get; set; }
}

public class Project
{
[Key]
public int Id { get; set; }
[Required]
public String ProjectName { get; set; }
[Required]
public String CompanyName { get; set; }
}

public class ProjectHour
{
[Key]
public int Id { get; set; }
[Required]
public decimal Hours { get; set; }
[Required]
public DateTime Date { get; set; }
public virtual ICollection<Employee> employeeId { get; set; }
public virtual ICollection<Project> projectId { get; set; }
}

我想要的是创建一个表单,该表单将创建与项目和员工相关联的新项目时间。我正在尝试使用下拉列表在创建表单上显示员工和项目。显然,我对此完全陌生,但到目前为止我所拥有的是:
[HttpPost]
public ActionResult CreateProjectHour(ProjectHour newProjectHour)
{
using (var db = new TimesheetContext())
{
IEnumerable<SelectListItem> emp = db.Employees
.Select(c => new SelectListItem
{
Value = c.Id.ToString(),
Text = c.LastName
});
ViewBag.EmployeeId = emp;

db.ProjectHours.Add(newProjectHour);
db.SaveChanges();
}

return RedirectToAction("ProjectHourList");
}
}

并在表格上:
@model TimesheetMVC.Models.ProjectHour
...
@Html.DropDownListFor(model => model.employeeId, (SelectList)ViewBag.EmployeeId)

这显然是非常错误的。任何帮助将非常感激...!

最佳答案

不要使用同名的EmployeeId。在 ASP.NET MVC 中创建下拉列表需要两件事:一个将保存所选值的标量属性和一个将包含可能值的集合属性。但是由于您使用的是 ViewBag(我完全不推荐),您可以执行以下操作:

ViewBag.Employees = emp;

在您看来:
@Html.DropDownListFor(
model => model.employeeId,
(IEnumerable<SelectListItem>)ViewBag.Employees
)

但正如我所说,这根本不是我推荐的方法。我建议使用 View 模型。所以定义一个 IEnumerable<SelectListItem>您的 View 模型上的属性:
public IEnumerable<SelectListItem> Employees { get; set; }

并在您的 Controller 中填充此 View 模型属性,然后将您的 View 强类型化为 View 模型。

关于Razor, MVC4, @html.dropdownlistfor 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11230850/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com