首先,我的观点是创建一个项目。用户将能够从下拉列表中选择该项目的父项目。当用户选择项目的父项目时,应将其作为父项目属性保存到数据库(db)中。
我的错误消息如下。
[System.InvalidOperationException] = {“从类型'System.String'到类型'ProjectName.Models.Project'的参数转换失败,因为没有类型转换器可以在这些类型之间转换。”}
我的 ProjectsController 操作:
//GET
public ActionResult Create()
{
var projectList = db.Projects.ToList().Select(
c => new SelectListItem
{
Selected = false,
Text = c.projectName,
Value = c.projectID.ToString()
}
).ToList();
ViewData["ProjectList"] = projectList;
return View();
}
//
// POST: /Project/Create
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(Project project)
{
var projectList = db.Projects.ToList().Select(
c => new SelectListItem
{
Selected = false,
Text = c.projectName,
Value = c.projectID.ToString()
}
).ToList();
ViewData["ProjectList"] = projectList;
if (ModelState.IsValid)
{
db.Projects.Add(project);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(project);
}
我的项目类:
public class Project{
public int projectID { get; set; }
public string projectName { get; set; }
public string descriptionProject { get; set; }
public Project parentProject { get; set; }
}
我的上下文类:
public class DBContext : DbContext
{
public DbSet<User> Users { get; set; }
public DbSet<Project> Projects { get; set; }
public DbSet<Issue> Issues { get; set; }
}
最后是我的观点:
@model ProjectName.Models.Project
....
<div class="form-group">
@Html.LabelFor(model => model.parentProject, new { @class = "col-lg-2 control-label" })
<div class="col-lg-10">
<p>@Html.DropDownListFor(model => model.projectID, (IEnumerable<SelectListItem>)ViewData["ProjectList"], " --Select Parent Project--")</p>
@Html.ValidationMessageFor(model => model.parentProject)
</div>
</div>
我在等你的回复。提前致谢。顺便说一句,我使用的是 mvc 5.2,visual studio 2013 update 2。