我有以下代码:
$('#CreateButton').click(function (event) {
var datastoreValue = $("#SelectedDatastore").val();
window.location = "/Q/Create?datastore=" + datastoreValue;
});
它运行良好,但我希望我的用户隐藏数据存储区= XYZ。有没有其他方法可以传递此信息,以便我能够在我的MVC控制器中读取它。目前我这样读了:
public ActionResult Create(string datastore)
{
在此方法中,数据存储区的值可供我使用。
答案 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>