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

时间:2011-07-18 08:11:16

标签: javascript asp.net-mvc

我有以下代码:

$('#CreateButton').click(function (event) {
 var datastoreValue = $("#SelectedDatastore").val();
 window.location = "/Q/Create?datastore=" + datastoreValue;
});

它运行良好,但我希望我的用户隐藏数据存储区= XYZ。有没有其他方法可以传递此信息,以便我能够在我的MVC控制器中读取它。目前我这样读了:

    public ActionResult Create(string datastore)
    {

在此方法中,数据存储区的值可供我使用。

3 个答案:

答案 0 :(得分:2)

使用表单标记并使用设置为POST的方法对代码进行环绕。还要在“创建”操作上方添加HttpPost属性。这会将数据发布到您的操作,而无需客户端查看查询字符串值。如果要发布到另一个操作,该操作在表单内的操作属性中指定该操作。例如,

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

您的“创建”操作将选择此操作并完成其余操作。

希望这有帮助,

Huske

答案 1 :(得分:0)

您可以将数据存储区值放在Cookie中以将其隐藏起来,但Cookie最适合用于您想要持续一段时间的设置,而不是仅用于一页的设置。

或者,您可以使用帖子并将创建信息放在隐藏的表单中并提交。

或者,您可以使用Ajax调用来发布创建,然后自己更改页面。

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

答案 2 :(得分:0)

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

使用标记中的id为SelectedDataStore的控件包装表单,并将操作设置为您的网址,方法设置为发布

以下是一个提交按钮的简单示例:

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