如何从Javascript向新页面传递参数?

如何从Javascript向新页面传递参数?,javascript,asp.net-mvc,Javascript,Asp.net Mvc,我有以下代码: $('#CreateButton').click(function (event) { var datastoreValue = $("#SelectedDatastore").val(); window.location = "/Q/Create?datastore=" + datastoreValue; }); 它工作得很好,但我希望对我的用户隐藏datastore=XYZ。是否有其他方法可以传递这些信息,以便我能够在MVC控制器中读取这些信息。目前我是这样读的:

我有以下代码:

$('#CreateButton').click(function (event) {
 var datastoreValue = $("#SelectedDatastore").val();
 window.location = "/Q/Create?datastore=" + datastoreValue;
});
它工作得很好,但我希望对我的用户隐藏datastore=XYZ。是否有其他方法可以传递这些信息,以便我能够在MVC控制器中读取这些信息。目前我是这样读的:

    public ActionResult Create(string datastore)
    {

在这个方法中,数据存储的值对我来说是可用的

您可以将数据存储值放在cookie中以对用户隐藏,但cookie最好用于您希望持续一段时间的设置,而不是仅用于一页的设置

或者,您可以使用帖子,将创建信息隐藏在一个隐藏的表单中,然后提交

或者,您可以使用Ajax调用发出create命令,然后自己更改页面


否则,您正在使用的查询参数是为新页面指定页面级参数的标准方法。

如果您停留在同一个网站上,您可以将数据发送给控制器;它将从post集合中提取数据,并且您的url不会显示查询字符串参数

只需使用id为SelectedDataStore的控件将表单包装在标记中,操作设置为url,方法设置为post

下面是一个带有提交按钮的快速示例:

<FORM action="/Q/Create" method="post">
    <INPUT id="SelectedDataStore" />
<INPUT type="submit" value="Send">
 </FORM>

用一个表单标记将您的代码包围起来,该标记的方法设置为POST。还可以在创建操作上方添加HttpPost属性。这将在客户端看不到查询字符串值的情况下将数据发布到操作。如果您正在发布到另一个操作,并在表单内的操作属性中指定该操作。比如说,

<% using (Html.BeginForm("Create", "MyController", null, FormMethod.Post)) { %>
<%: Html.Label("Data store value: ")%>
<%: Html.TextBox("datastore") %>
<input type="submit" value="Submit" />
<% } %>

您的创建操作将拾取此项并执行其余操作

希望这有帮助

赫斯克