我正在提交一个表单,该表单将三个值传递给控制器,即电子邮件,全名和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)
{
}
但是,当我点击提交按钮时,它会在控制台中抛出一条错误消息。
选项https://localhost:50138/TestAPI/SubmitResult 净:: ERR_SSL_PROTOCOL_ERROR。
接头
请求网址:https://localhost:50138/TestAPI/SubmitResult
推荐人政策:no-referrer-when-downgrade
如何正确装饰控制器中的属性,以便我可以使用Postman传递多个参数来测试API?
我期待下面的内容可以用于测试。
http://localhost:50138/api/TestAPI/SubmitResult/test@gmail.com/MikeShawn/2
答案 0 :(得分:1)
您的代码存在一些问题。
第一个问题是,当您发布尝试使用跨源请求发送数据时,它看起来就像。如果这是有目的的,那么你必须在管道中添加CORS中间件。如果没有 - 你必须弄清楚它为什么会发生并修复它。你的问题中没有足够的细节来说明它为什么会发生。
如果两个URL具有相同的方案,主机和端口,则它们具有相同的来源。
第二个问题是您尝试通过向URL添加参数来发送数据。这是错误的,因为数据将在请求正文中发送。因此,关于HttpPost
属性,它应该如下所示:
[HttpPost]
[Authorize(Roles = "Admin, Shop")]
public IActionResult SubmitResult(string email, string fullName, long? studentId)
{
}
<强>更新强>
再看看你的问题。似乎带有表单的页面是使用http
方案打开的,但POST请求实际上是https
方案。因此,要解决第一个问题,请确保使用https
方案加载带有表单的页面。