3

我有一个页面,其中包含一个带有 ActionLink 的客户端列表,允许用户显示(或隐藏)“非活动”客户端。showInactive=True附加到 url 作为控制器的查询字符串。显示“非活动”客户端后,我编辑其中一个,但是当我保存任何更改或返回列表时,查询字符串消失了。在这些请求中保留查询字符串的最佳方法是什么?我已经尝试过 TempData 字典,但显然我试图将它用于它不适合处理的东西。

4

2 回答 2

6

实现此目的的一种简单方法是向returnUrl您的操作添加一个参数,如下所示:

[HttpPost]
public ActionResult Edit(int id, ClientEditModel model, string returnUrl)
{
    if (!ModelState.IsValid) return View();
    try
    {
        // do something
        return Redirect(returnUrl);
    }
    catch
    {
        return View();
    }
}

然后在您看来,您可以这样称呼您的操作:

@Html.ActionLink("Edit", "Edit", new { id = Model.Id, returnUrl = Request.RawUrl })

在此设置中,当用户完成编辑后,她将被带回原来的位置,不仅保留showInactive,还保留列表中可能具有的任何其他参数,例如页码、搜索条件、排序顺序, ETC。

于 2011-05-19T02:33:05.057 回答
1

将查询字符串参数传递到您的编辑页面并将值添加为隐藏的表单字段参数。如果不存在,则默认为 false。这样,当您执行编辑帖子并进行处理时,您可以将值从绑定的模型/FormCollection/etc 中提取出来,并根据它的值使用适当的查询字符串参数值进行重定向。

return this.RedirectToAction("ListClients", new { showInactive = *INSERT THE VALUE* });

这转化为

/CurrentController/ListClients?showInactive=*value*
于 2011-05-19T01:01:07.557 回答