重定向时,我有如下声明:传递视图模型在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
}
你为什么不使用RedirectToAction( “行动”,“控制器“,new {paramName = item}); ?在你的控制器中做html重定向是一个糟糕的主意。 – Jared
坏主意?这取决于你想要做什么。我需要返回一个与MVC推断控制器不同的视图。您提出的解决方案是重定向到特定控制器内的操作,但我不希望这样。我想从控制器返回到同一个视图,我的意思是,从我调用此控制器的视图中,然后在此控制器完成它必须做的操作后,我需要保留在同一页面中并更新视图中的某些字段所以我需要通过视图模型。 – user304602
你需要ajax电话然后 –