我正在开发一个简单的项目跟踪网站。“项目”有“任务”,“任务”有“子任务”。使用默认脚手架,在创建“任务”时,我必须手动选择“任务”的“ProjectId”字段。我想设置它,我只能从“项目详细信息”视图中创建一个“任务”。我想知道如何做到这一点,这样我就不必在创建新任务时手动选择“ProjectId”。以下是片段:
这是由 Visual Studio 自动生成的 Task 的 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。但我不知道在哪里。这甚至是正确的做法吗?或者,还有更好的方法?
谢谢