シンプルなプロジェクト追跡 Web サイトを開発しています。「プロジェクト」には「タスク」があり、「タスク」には「サブタスク」があります。デフォルトの足場では、「タスク」を作成するときに、「タスク」の「ProjectId」フィールドを手動で選択する必要があります。「プロジェクトの詳細」ビュー内からのみ「タスク」を作成できるように設定したいと思います。新しいタスクを作成するときに「ProjectId」を手動で選択する必要がないようにするにはどうすればよいのでしょうか。スニペットは次のとおりです。
これは、Visual Studio によって自動生成されたタスクの Create.cshtml の一部です。
<div class="editor-label">
@Html.LabelFor(model => model.ProjectId, "Project Id")
</div>
<div class="editor-field">
@Html.DropDownList("ProjectId", String.Empty)
@Html.ValidationMessageFor(model => model.ProjectId)
</div>
これにより、プロジェクト ID を手動で選択する必要があるドロップダウン ボックスが表示されます。
これは、「タスク」コントローラーからのデフォルトの「作成」アクションです。
public ActionResult Create()
{
ViewBag.ProjectId = new SelectList(db.Projects, "Id", "Id");
ViewBag.StatusId = new SelectList(db.Status, "Id", "Name");
ViewBag.TaskTypeId = new SelectList(db.TaskTypes, "Id", "Name");
return View();
}
私が欲しいのは次のようなものです:
public ActionResult Create()
{
ViewBag.ProjectId = RouteData.Values["Id"];
ViewBag.StatusId = new SelectList(db.Status, "Id", "Name");
ViewBag.TaskTypeId = new SelectList(db.TaskTypes, "Id", "Name");
return View();
}
どこかで myTask.ProjectId = ViewBag.ProjectId を設定する必要があります。しかし、どこかわかりません。これは正しい方法ですか?それとももっと良い方法がありますか?
ありがとう