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

时间:2014-01-15 05:46:45

标签: c# jquery asp.net-mvc asp.net-mvc-routing query-string

我想将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)有没有办法隐藏查询字符串或者我们可以加密吗?

5 个答案:

答案 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)

  1. 您可以将数据存储在会话变量中或尝试在cookie中存储值。

  2. 最好使用TempData,它只允许使用一次值(在第一次访问时删除)。但是,这意味着该值几乎会立即使用。

  3. 加密查询字符串。

答案 2 :(得分:1)

你可以试试这个:

HttpServerUtility.UrlTokenEncodeHttpServerUtility.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中嵌入您的页面或部分页面,这将隐藏查询字符串和网址。