Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 在MVC 3中跨请求持久化查询字符串_Asp.net Mvc_Asp.net Mvc 3_Asp.net Mvc 4_Razor - Fatal编程技术网

Asp.net mvc 在MVC 3中跨请求持久化查询字符串

Asp.net mvc 在MVC 3中跨请求持久化查询字符串,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-4,razor,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc 4,Razor,我有一个包含客户端列表的页面,其中包含一个ActionLink,允许用户显示(或隐藏)“非活动”客户端。showInactive=True作为控制器的查询字符串附加到url。显示“非活动”客户端后,我编辑其中一个客户端,但当我保存任何更改或返回列表时,查询字符串消失。在这些请求中保持查询字符串的最佳方法是什么?我已经尝试了TempData字典,但显然我是在尝试将其用于它不适合处理的某些事情。将querystring参数传递到编辑页面,并将该值添加为隐藏的表单字段参数。如果不存在,则默认为fals

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

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

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

/CurrentController/ListClients?showInactive=*value*

实现这一点的一个简单方法是在操作中添加
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
,还保留列表中可能包含的任何其他参数,如页码、搜索条件、排序顺序,等等。

如果您向我们展示您的控制器代码,回答这个问题可能会更容易。恕我直言,您不明白我描述的哪一部分?如果你创建了一个新的MVC项目,这是默认的行为。谢谢Khepri-传递隐藏的表单字段似乎有点黑客。我希望有一个更干净的解决方案。据我所知,没有。我可以理解使用Session来持久化它,以避免传递值、将值提供给表单以及在帖子中读出值的开销,但就我个人而言,我只会传递值。