在MVC操作中隐藏查询字符串

我想将Querystring隐藏到我的控制器的动作中。

在我的应用程序场景中是这样的:

1)我在新窗口中打开了新动作:

var check="Particular String" var url = rootUrl("Home/Preview?Docs=" + check); window.open(url, '_blank'); 

2)在控制器端,我在Controller的操作中使用了一些代码:

  public ActionResult Preview(string Docs) { TempData["Docs"] = Docs; return RedirectToAction("UnInvoicedPreview"); } 

My Query :: 1)当打开新窗口时,它显示Begining中的Query字符串(当它不重定向到另一个动作时为uptill)。

2)我不想将QueryString显示到URL中。

3)有没有办法隐藏查询字符串或我们可以加密吗?

不,你根本无法隐藏查询字符串。 相反,有很多方法
session["key"]
2. viewbag
3. $.post in jquery
4。

 [HttpPost] public ActionResult Preview(string Docs) { TempData["Docs"] = Docs; return RedirectToAction("UnInvoicedPreview"); } 
  1. 您可以将数据存储在会话变量中,或尝试将值存储在cookie中。
  2. 最好使用TempData,它只允许使用一次值(在第一次访问时删除)。 但是,这意味着该值几乎会立即使用。

  3. 加密查询字符串。

你可以试试这个:

HttpServerUtility.UrlTokenEncodeHttpServerUtility.UrlTokenDecode将字节数组转换为URL安全字符串

这不是很好的MVC。 除特殊情况外,MVC并不真正使用查询字符串。

MVC中的推荐url为“/ Home / Preview /

话虽这么说,如果你想隐藏参数,最好使用jQuery并发布到服务器的post。

 var check="Particular String" var data = "Docs=" + check; $.post("/Home/Preview", data); 

请注意,如果您查看页面的查看源,您仍然可以看到此值,但至少它不会显示在Url中。

在IFrame中嵌入您的页面或页面的一部分,这将隐藏查询字符串和URL。