如何在操作之间保留viewModel属性

时间:2017-08-07 18:38:24

标签: jquery asp.net-mvc

我有两个下拉菜单。

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;" })

0 个答案:

没有答案