2017-05-12 26 views
1

我正在提交一个表单,将三个值传递给控制器​​,这是电子邮件,全名和id字段。Asp.net核心传递多个参数+ web api

@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 net :: ERR_SSL_PROTOCOL_ERROR。

头:

请求URL:https://localhost:50138/TestAPI/SubmitResult

引荐政策:无引用,当降级

如何正确装饰属性控制器,所以我可以使用Postman传递多个参数来测试API?

我期待着像下面这样的测试工作。

http://localhost:50138/api/TestAPI/SubmitResult/[email protected]/MikeShawn/2

+0

那么那个ASP.NET Core应用程序还是ASP.NET Web Api?你的标签很混乱,因为它不一样。 –

+0

对不起编辑。这是asp.net核心应用程序 – pavilion

回答

1

有你的代码的几个问题。

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

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

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

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

UPDATE

刚才看了你的问题一次。看起来与表格本身的页面是使用http方案打开的,但POST请求实际上是去https方案。因此,要解决第一个问题,请确保使用表格的页面也使用https方案加载。

+0

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

相关问题