在ASP.NET MVC 4中重定向时传递viewModel

时间:2013-10-21 12:44:00

标签: asp.net-mvc-4

我有以下声明:

return Redirect(this.Request.UrlReferrer.AbsolutePath);

这会重定向到调用者视图。它工作正常,但现在我需要在重定向时返回一个视图模型,类似这样(这是错误的):

return Redirect(this.Request.UrlReferrer.AbsolutePath(item));

那我怎么能实现这个目标呢?

我想这样做,因为我有一个jqrid,其中一个列提供了一些操作,编辑和删除行。因此,如果用户点击编辑,我将从传递给数据库的id中检索一些数据。然后,一旦我获得了这些数据,我就会填充视图模型以更新视图中的一些文本框,因此我需要在重定向时传递视图模型。

在控制器中的代码下面:

    public ActionResult Edit(int id)
    {            
        ItemViewModel item = new ItemViewModel();
        using (DBContext context = new DBContext())
        {
            Items itemToModify = context.Items.Single(i=> i.ItemId == id);

            item.Desc = itemToModify.Desc;
            item.Name = itemToModify.Name;
        }

        return Redirect(this.Request.UrlReferrer.AbsolutePath, item); <-- how to do this      
    }

1 个答案:

答案 0 :(得分:5)

您可以使用TempData之类的

在您的控制器中

public ActionResult Action1()
{
    ItemViewModel item = new ItemViewModel();
    TempData["item"] = item;
    return Redirect("Action2");
}

public ActionResult Action2()
{
    ItemViewModel item = (ItemViewModel)TempData["item"];

    //Your Code
}