javascript - Vue 获取发布数据到控制器 asp.net mvc
问题描述
我正在使用 Vue.js 并且我正在尝试发出发布请求并将数据 { name: 'TestName' } 发送到控制器,但是当我点击控制器时,名称等于“TestName”,它为空。
这是我的 Fetch:发布请求
`sendName() {
let url = 'https://localhost:44362/Home/ReceiveName'
fetch(url, {
method: 'POST',
body: JSON.stringify({ name: 'TestName' })
}).then(function (response) {
response
}).catch(err => {
err
});
}`
这是我在 HomeController 中的操作方法 ReceiveName
`[HttpPost]
public string ReceiveName(string name)
{
*some code*
}`
这里的名称必须是“TestName”,但它是 NULL
我已经尝试过这个问题的答案How to pass data to controller using Fetch api in asp.net core,[FromBody]
像这样在 ReceiveName 方法 中设置public string ReceiveName( [FromBody] string name)
,但它对我不起作用。然后我尝试添加标题以获取正文
`headers: {
'Content-Type': 'application/json'
},`
但是当我这样做时,我在浏览器中得到了那个错误
加载https://localhost:44362/Home/ReceiveName 失败:预检响应没有 HTTP ok 状态。
我认为这是因为 CORS 规则。
我在https://localhost:44362上运行我的后端,在http://localhost:8080/上运行我的前端,所以我必须像这样在 web.config 中编辑我的 CORS 规则
`<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>`
我的问题是- 如何从 Fetch:post 接收我的数据到我的操作方法?
是否需要制作查询字符串?
但是我不想发送我的字符串“TestName”,因为FormData
我知道如果我这样发送它,我将在我的操作方法中接收它,但这是发送字符串的好方法吗?
解决方案
我遇到了类似的问题,并找到了解决问题的方法。我认为您可能需要定义一个具有name
属性的模型类,然后将 [FromBody] 添加到您的操作参数中。
创建模型类...
public class SomeModel
{
public string name { get; set; }
}
然后将该模型用作您的参数类型...
[HttpPost]
public string ReceiveName([FromBody]SomeModel model)
{
// model.name should contain the value.
}
我不喜欢这个解决方案,但这是我通过研究能找到的最好的解决方案。希望对你有帮助!
推荐阅读
- elasticsearch - ElasticSearch 不使用 API 删除索引数据
- oracle - Oracle - 文本分类(添加辅助列)
- java - 两个 Spring JUnit 测试类:@TestPropertySource 值不同时的 InstanceAlreadyExistsException
- javascript - 填充输入后显示下一个 div
- identityserver4 - Identity Server 4 - 用作 idp 时联合注销 google
- sql - 读取 BLOB_TYPE 字段
- node.js - validate.js 返回错误“未知验证器模式”
- javascript - 如何让 codova-plugin-file 在 Visual Studio 2017 上工作
- java - 有没有办法从元注释中注入 Jackson 注释值,类似于 Spring 的 AliasFor 注释?
- c# - 有什么方法可以动态设置这个属性值?