Asp.net 核心传递多个参数 + web api
Asp.net core passing multiple parameter + web api
我正在提交一个将三个值传递给控制器的表单,它们是电子邮件、全名和 ID 字段。
@using (Html.BeginForm("SubmitResult", "TestAPI", FormMethod.Post, new { id = "postEmailForm" }))
{
<div id="details-container">
<input type="text" name="email" />
<input type="text" name="fullName" />
<input type="text" name="studentId" />
<button type="submit" id="send">Send</button>
</div>
}
控制器:
[HttpPost("SubmitResult/{email}/{fullName}/{studentId}")]
[Authorize(Roles = "Admin, Shop")]
public IActionResult SubmitResult(string email, string fullName, long? studentId)
{
}
但是,当我点击提交按钮时,它会在控制台中抛出一条错误消息。
OPTIONS https://localhost:50138/TestAPI/SubmitResult
net::ERR_SSL_PROTOCOL_ERROR.
Headers:
Request URL: https://localhost:50138/TestAPI/SubmitResult
Referrer Policy: no-referrer-when-downgrade
如何正确装饰控制器中的属性,以便我可以传递多个参数来使用 Postman 测试 API?
我期待像下面这样的东西用于测试。
http://localhost:50138/api/TestAPI/SubmitResult/test@gmail.com/MikeShawn/2
您的代码几乎没有问题。
第一个问题是,当您 post 它尝试使用跨源请求发送数据时,它看起来像是。如果这是故意的,那么您必须在管道中添加 CORS 中间件。如果不是 - 你必须找出它发生的原因并修复它。你的问题中没有足够的细节来说明为什么会这样。
Two URLs have the same origin if they have identical schemes, hosts, and ports.
第二个问题是您试图通过向 URL 添加参数来发送数据。这是错误的,因为数据将在请求正文中发送。所以关于 HttpPost
属性应该是这样的:
[HttpPost]
[Authorize(Roles = "Admin, Shop")]
public IActionResult SubmitResult(string email, string fullName, long? studentId)
{
}
更新
刚刚又看了你的问题。似乎带有表单的页面本身是使用 http
方案打开的,但 POST 请求实际上是使用 https
方案打开的。因此,要解决第一个问题,请确保也使用 https
方案加载带有表单的页面。
我正在提交一个将三个值传递给控制器的表单,它们是电子邮件、全名和 ID 字段。
@using (Html.BeginForm("SubmitResult", "TestAPI", FormMethod.Post, new { id = "postEmailForm" }))
{
<div id="details-container">
<input type="text" name="email" />
<input type="text" name="fullName" />
<input type="text" name="studentId" />
<button type="submit" id="send">Send</button>
</div>
}
控制器:
[HttpPost("SubmitResult/{email}/{fullName}/{studentId}")]
[Authorize(Roles = "Admin, Shop")]
public IActionResult SubmitResult(string email, string fullName, long? studentId)
{
}
但是,当我点击提交按钮时,它会在控制台中抛出一条错误消息。
OPTIONS https://localhost:50138/TestAPI/SubmitResult net::ERR_SSL_PROTOCOL_ERROR.
Headers:
Request URL: https://localhost:50138/TestAPI/SubmitResult
Referrer Policy: no-referrer-when-downgrade
如何正确装饰控制器中的属性,以便我可以传递多个参数来使用 Postman 测试 API?
我期待像下面这样的东西用于测试。
http://localhost:50138/api/TestAPI/SubmitResult/test@gmail.com/MikeShawn/2
您的代码几乎没有问题。
第一个问题是,当您 post 它尝试使用跨源请求发送数据时,它看起来像是。如果这是故意的,那么您必须在管道中添加 CORS 中间件。如果不是 - 你必须找出它发生的原因并修复它。你的问题中没有足够的细节来说明为什么会这样。
Two URLs have the same origin if they have identical schemes, hosts, and ports.
第二个问题是您试图通过向 URL 添加参数来发送数据。这是错误的,因为数据将在请求正文中发送。所以关于 HttpPost
属性应该是这样的:
[HttpPost]
[Authorize(Roles = "Admin, Shop")]
public IActionResult SubmitResult(string email, string fullName, long? studentId)
{
}
更新
刚刚又看了你的问题。似乎带有表单的页面本身是使用 http
方案打开的,但 POST 请求实际上是使用 https
方案打开的。因此,要解决第一个问题,请确保也使用 https
方案加载带有表单的页面。