我有两个下拉菜单。
if (Model.Categories != null)
{
@Html.DropDownListFor(m => m.SelectedCategory, new SelectList(Model.Categories, "UniqueId", "Name", Model.SelectedCategory), new { onchange = @"form.action='/Home/Index';form.submit();" })
}
if (Model.Projects != null)
{
@Html.DropDownListFor(m => m.SelectedProject, new SelectList(Model.Projects, "UniqueId", "Name", Model.SelectedProject), new { @onchange = @"form.action='/Home/UpdateTasks';form.submit();" })
}
@Html.ActionLink("View Project", "Project", new { id = Model.SelectedProject })
选择第二个下拉列表项时要执行的控制器操作如下所示。
public ActionResult UpdateTasks(ProjectViewModel viewModel)
{
if (ModelState.IsValid)
{
viewModel.Projects = this._projectService.Projects(viewModel.SelectedCategory);
viewModel.Tasks = this._projectService.Tasks(viewModel.SelectedProject);
}
return View("Index", viewModel);
}
问题是,一旦用户点击“查看项目”链接,它将采用id为输入参数的新操作方法并返回 一个看法。在该视图上有一个返回上一页的选项,该选项应该指向UpdateTasks方法,但它会返回到该方法 但是viewModel属性为null。
如何在操作之间保留viewModel属性?
我正在考虑将UpdateTasks方法更改为如下所示,因为我只需要SelectedCategory和SelectedProject
public ActionResult UpdateTasks(int projectid, int categoryid)
{
......
}
但是如何将所选项目和类别参数传递给下拉列表中的更改事件?
我尝试更改onchange事件,如下所示传递多个参数,但由于categoryId为null,因此结构中似乎存在问题。
var abc = Model.SelectedCategory;
@Html.DropDownListFor(m => m.SelectedProject, new SelectList(Model.Projects, "UniqueId", "Name", Model.SelectedProject), new { @onchange = "document.location.href = '/Home/UpdateTasks/?projectId=' + this.value + '&categoryId=' + abc;" })