まず、私のポイントはプロジェクトを作成することです。ユーザーはドロップダウン リストからこのプロジェクトの親プロジェクトを選択できます。ユーザーがプロジェクトの親プロジェクトを選択すると、これは親プロジェクトのプロパティとしてデータベース (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 を使用しています。