【发布时间】:2015-10-20 07:21:47
【问题描述】:
截至目前,我使用 GET 请求导航到一个视图,看起来像这样:
/batches/install?Id=2&ScheduledDate=07.29%3A12
从那里,我使用表单发送一个 POST 请求(我在其中包含我希望在请求中包含的数据。
此外,我将表单操作设置为“创建”,这是我希望将请求发送到的操作。
我的问题是发送此请求会在 POST url 中保留 GET 参数,使其看起来如下:
../batches/Create/2?ScheduledDate=07.29%3A12
我不想这样,因为:
1:看起来很奇怪
2:它发送我不打算在此请求中发送的数据
3:如果我的模型已经有一个名为“id”或“scheduledDate”的属性,则无意的 GET 参数将绑定到这些属性。
如何在我的新 POST 请求中忽略当前的 GET 参数? 我只想将表单 POST 数据发送到 url: ../批次/创建 (不带任何 GET 参数)
如何做到这一点?
根据要求,这是我的 POST 表单:
@using (var f = Html.Bootstrap().Begin(new Form("Create")))
{
//inputs omitted for brevity
@Html.Bootstrap().SubmitButton().Style(ButtonStyle.Success).Text("Create batch")
}
请注意,我使用 TwitterBootstrapMVC html 帮助程序 (https://www.twitterbootstrapmvc.com/),尽管这并不重要。
根据要求,总结一下:
我将获取请求发送到:/batches/install?Id=2&ScheduledDate=07.29%3A12。
通过返回的视图,我将 POST 请求发送到:/batches/create。
但是,之前的 get 参数包含在发出 POST 请求查询的 POST 请求 URL 中:/batches/Create/2?ScheduledDate=07.29%3A12(这不是预期的)。
【问题讨论】:
-
请显示您的 POST 请求被触发的表单的 HTML 或 Razor。
-
@lbrahim 我在我的问题中包含了基本形式。
-
不清楚您的要求。如果您发布表单,您应该重定向到另一个 GET 方法,这样就不会有参数。或者,如果您返回视图以更正验证错误,那么您为什么期望
-
@StephenMuecke 场景是:我将获取请求发送到:/batches/install?Id=2&ScheduledDate=07.29%3A12。通过返回的视图,我将 POST 请求发送到: /batches/create ,但是之前的 get 参数包含在 POST 请求 URL 中进行 POST 请求查询: /batches/Create/2?ScheduledDate=07.29%3A12 (不是打算。)。
-
您在浏览器的地址栏中看到的是作为 GET(而不是 POST)结果生成的查询字符串参数。您需要展示您的 POST 方法以了解您真正在做什么
标签: asp.net-mvc http routing asp.net-mvc-5 asp.net-mvc-routing