0

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

4

1 に答える 1