使用 Axios POST 到 ASP.Net WEB API 2 with VB.NET

Using Axios POST to ASP.Net WEB API 2 with VB.NET

我无法读取 VB.NET Web API 2 控制器中的 Axios json 数据。我喜欢

var headers = {
        'Content-Type': 'application/json',
         'Access-Control-Allow-Origin': '*'
      }

  let url = 'https://.azurewebsites.net/api/SavePMIDdata/'
  axios.post(url, {
      params: {
        pmids: PMIDList,
        memberID: memberID
      }
    }, {
      'headers': headers
    })
    .then(function (response) {
      resultElement.innerHTML = generateSuccessHTMLOutput(response);
    })
    .catch(function (error) {
      resultElement.innerHTML = generateErrorHTMLOutput(error);
    });
} 

我的 Web 中的控制器信息APIConfig 是:

   config.Routes.MapHttpRoute(
        name:="ActionApi",
        routeTemplate:="api/{controller}/{action}"
    )

我的控制器 class 是:

 Public Function PostValue(<FromBody()> ByVal data As JToken) As String

我试过了:

  Public Function PostValue(<FromBody()> ByVal data As string) As String

Public Function PostValue(<FromBody()> ByVal data As objJSON ) As String

   Public Class objJSON          
        Public Property pmids As String
        Public Property memberID As String
    End Class

当我发送它时,我得到一个状态 200,如果我输入一个硬编码的 return 值,我会得到它,但如果我尝试读取正在发送的参数,我会得到一个空值。我认为我没有正确阅读它们。

如果我尝试做 Dim json As JObject = JObject.Parse(数据) 我回来了

"Value cannot be null.\r\nParameter name: s"

如果这是一个重复的问题,请发给我,因为我找不到它。我已经找了三天了。我遇到了一些接近的事情,但我无法让 VB 工作。我正在尝试将旧的 .asmx 代码转换为更新的结构。谢谢你的帮助。

经过几天的调整,我现在已经创建了有效的方法。我不是 100% 确定这是最佳做法,希望任何可以给我意见的人提供意见。

首先我改变了我的

axios.post(url, {
      params: {
        pmids: PMIDList,
        memberID: memberID
      }
    }, {
      'headers': headers
    })

axios.post(url, {
pmids:PMIDList, 会员编号:会员编号
}, { 'headers': headers })

我取出了参数:{}

接下来在我的控制器中我使用了:

Public Function PostValue(<FromBody()> ByVal value As objJSON) As String
            Dim x = value.pmids.ToString
            return (x)
End Function

它现在 returns 在 axios POST 中发送的 pmid 字符串。我很高兴,现在可以继续前进了。如果有最佳实践标准我很想学习。