在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"); }
- 您可以将数据存储在会话变量中,或尝试将值存储在cookie中。
-
最好使用TempData,它只允许使用一次值(在第一次访问时删除)。 但是,这意味着该值几乎会立即使用。
-
加密查询字符串。
你可以试试这个:
HttpServerUtility.UrlTokenEncode
和HttpServerUtility.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。