GET 请求后 POST 中存在的查询字符串
Query string present in POST after a GET request
我是网络开发的新手,所以如果这个问题看起来是一个非常基础的问题,请多多包涵。
我的 Razor 页面中有这些代码
<form method="get">
<input type="number" name="Id" />
<input type="date" name="AddDate" />
<input type="text" name="Title" />
<input type="checkbox" name="IsDone" value="true" />
<input type="submit" value="GET" />
</form>
<form method="post">
<input type="number" name="Id" />
<input type="date" name="AddDate" />
<input type="text" name="Title" />
<input type="checkbox" name="IsDone" value="true" />
<input type="submit" value="POST" />
</form>
还有我的页面模型
public void OnGet(int id, DateTime addDate, string title, bool isDone)
{
}
public void OnPost(int id, DateTime addDate, string title, bool isDone)
{
// Not empty when POSTed after GET. I suppose the POST will not use query string?
var q = Request.QueryString;
}
当我POST GET 之后的表单时,查询字符串不为空(来自最后一个GET)。表单值 POST 没问题,但是 POST 请求中查询字符串的存在让我感到困惑。
我是否错过了一些基本的 HTML 概念?
When I POST the form after GET, the query string is not empty (from the last GET).
默认情况下,如果使用 GET 动词,表单值将附加到接收页面的 URL 作为查询字符串值。
在 Razor 页面中,如果省略页面名称或页面处理程序属性,表单将提交到当前 URL。
The form values are POSTed OK, but the presence of query string in a POST request confuse me.
如果您不希望之前 GET 请求的这些查询字符串值出现在您的 POST 处理程序中,您可以尝试使用当前页面模型名称显式设置 asp-page
属性,如下所示。
<form method="post" asp-page="/Test">
<input type="number" name="Id" />
<input type="date" name="AddDate" />
<input type="text" name="Title" />
<input type="checkbox" name="IsDone" value="true" />
<input type="submit" value="POST" />
</form>
浏览器将没有 action
(确实应该提供)的表单视为与 action=""
相同,这意味着:使用当前页面位置。这意味着它包含当前查询字符串。
因为您不希望这样:请明确指定 action
我是网络开发的新手,所以如果这个问题看起来是一个非常基础的问题,请多多包涵。
我的 Razor 页面中有这些代码
<form method="get">
<input type="number" name="Id" />
<input type="date" name="AddDate" />
<input type="text" name="Title" />
<input type="checkbox" name="IsDone" value="true" />
<input type="submit" value="GET" />
</form>
<form method="post">
<input type="number" name="Id" />
<input type="date" name="AddDate" />
<input type="text" name="Title" />
<input type="checkbox" name="IsDone" value="true" />
<input type="submit" value="POST" />
</form>
还有我的页面模型
public void OnGet(int id, DateTime addDate, string title, bool isDone)
{
}
public void OnPost(int id, DateTime addDate, string title, bool isDone)
{
// Not empty when POSTed after GET. I suppose the POST will not use query string?
var q = Request.QueryString;
}
当我POST GET 之后的表单时,查询字符串不为空(来自最后一个GET)。表单值 POST 没问题,但是 POST 请求中查询字符串的存在让我感到困惑。
我是否错过了一些基本的 HTML 概念?
When I POST the form after GET, the query string is not empty (from the last GET).
默认情况下,如果使用 GET 动词,表单值将附加到接收页面的 URL 作为查询字符串值。
在 Razor 页面中,如果省略页面名称或页面处理程序属性,表单将提交到当前 URL。
The form values are POSTed OK, but the presence of query string in a POST request confuse me.
如果您不希望之前 GET 请求的这些查询字符串值出现在您的 POST 处理程序中,您可以尝试使用当前页面模型名称显式设置 asp-page
属性,如下所示。
<form method="post" asp-page="/Test">
<input type="number" name="Id" />
<input type="date" name="AddDate" />
<input type="text" name="Title" />
<input type="checkbox" name="IsDone" value="true" />
<input type="submit" value="POST" />
</form>
浏览器将没有 action
(确实应该提供)的表单视为与 action=""
相同,这意味着:使用当前页面位置。这意味着它包含当前查询字符串。
因为您不希望这样:请明确指定 action