【问题标题】:Asp.net core passing multiple parameter + web apiAsp.net核心传递多个参数+ web api
【发布时间】:2025-12-12 20:05:01
【问题描述】:

我正在提交一个向控制器传递三个值的表单,它们是电子邮件、全名和 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

【问题讨论】:

  • 那是 ASP.NET Core 应用程序还是 ASP.NET Web Api?您的标签令人困惑,因为它不一样。
  • 抱歉已编辑。它是 asp.net 核心应用程序

标签: postman asp.net-core-webapi


【解决方案1】:

您的代码几乎没有问题。

第一个问题是,当您发布数据时,它会尝试使用跨域请求发送数据。如果这是故意的,那么您必须在管道中添加 CORS 中间件。如果不是 - 你必须弄清楚它为什么会发生并修复它。您的问题中没有足够的细节来说明为什么会发生这种情况。

如果两个 URL 具有相同的方案、主机和端口,则它们具有相同的来源。

第二个问题是您试图通过向 URL 添加参数来发送数据。这是错误的,因为数据将在请求正文中发送。所以关于HttpPost 属性应该是这样的:

[HttpPost]
[Authorize(Roles = "Admin, Shop")]
public IActionResult SubmitResult(string email, string fullName, long? studentId)
{
}

更新

刚刚又看了一遍你的问题。似乎带有表单本身的页面是使用http 方案打开的,但 POST 请求实际上是转到https 方案。因此,要解决第一个问题,请确保使用 https 方案加载带有表单的页面。

【讨论】:

  • 我刚刚更新了我的答案并删除了第三和第四个问题,因为它们与您的问题无关。