我想将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");
}
我的查询:: 1)当打开新窗口时,它会显示Begining中的查询字符串(当它没有重定向到另一个操作时为uptill)。
2)我不想将QueryString显示在URL中。
3)有没有办法隐藏查询字符串或者我们可以加密吗?
答案 0 :(得分:3)
不,你根本无法隐藏查询字符串。
而不是那种方法有很多种
1. session["key"]
2. viewbag
3. $.post in jquery
4。
[HttpPost]
public ActionResult Preview(string Docs)
{
TempData["Docs"] = Docs;
return RedirectToAction("UnInvoicedPreview");
}
答案 1 :(得分:1)
最好使用TempData,它只允许使用一次值(在第一次访问时删除)。但是,这意味着该值几乎会立即使用。
加密查询字符串。
答案 2 :(得分:1)
你可以试试这个:
HttpServerUtility.UrlTokenEncode
和HttpServerUtility.UrlTokenDecode
将字节数组转换为URL安全字符串
答案 3 :(得分:0)
这不是很好的MVC。除特殊情况外,MVC并不真正使用查询字符串。
MVC中推荐的网址为“/ Home / Preview /< docsValue>”
话虽这么说,如果你想隐藏参数,最好使用jQuery并发帖到服务器。
var check="Particular String"
var data = "Docs=" + check;
$.post("/Home/Preview", data);
请注意,如果您查看页面的视图来源,仍然可以看到此值,但至少它不会显示在网址中。
答案 4 :(得分:0)
在IFrame中嵌入您的页面或部分页面,这将隐藏查询字符串和网址。