如何在 C# 中将数据发送到 ASP.NET 核心 MVC 控制器?
How to send data to the ASP.NET Core MVC controller in C#?
我正在尝试将数据从我的 Javascript 发送到我的 post 方法控制器。我将淘汰赛作为从 Javascript 绑定到我的视图的方法。
这是我的控制器,这就是 convocationData 为 null 的地方
public async Task<ActionResult> CreateConvocation(string convocationData)
{
string baseUrl = "http://localhost:8080";
HttpClient client = new HttpClient();
client.BaseAddress = new Uri(baseUrl);
这就是我尝试使用 jQuery:
调用方法的方式
var tmpSession = self.addSession();
var tmpDescription = self.addDesc();
var convocationData = {
sessionCode: tmpSession,
description: tmpDescription
};
$.ajax({
url: '/Convocations/CreateConvocation',
type: 'POST',
dataType: 'json',
data: JSON.stringify(convocationData),
contentType: 'application/json',
success: function (data) {
self.Convocations.push(new Convocation(self.addSession(), self.addDesc()));
self.addDesc("");
self.addSession("");
},
error: function (err) {
alert(err.status + " : " + err.statusText);
}
});
像这样添加 [FromBody]
属性
[HttpPost]
public async Task<ActionResult> CreateConvocation([FromBody]string convocationData)
{
return text;
}
您可以在此处阅读更多内容 Accepting Raw Request Body Content with ASP.NET Web API
更新:
此外,请阅读 zgood 对您 post 的评论。而不是使用 JSON.stringify
你应该创建一个相应的模型,正如他在评论中所描述的那样。
更新 2:
JS模型class
class Convocation {
constructor(sessionCode, description) {
this.sessionCode = sessionCode;
this.description = description;
}
}
C# DTO class
public class Convocation
{
public string SessionCode{ get; set; }
public string Description { get; set; }
}
然后你可以更新你的动作方法到这个
[HttpPost]
public async Task<ActionResult> CreateConvocation([FromBody]Convocation convocation)
{
return text;
}
和ajax post到这个:
$.ajax({
url: '/Convocations/CreateConvocation',
type: 'POST',
dataType: 'json',
data: new Convocation(tmpSession, tmpDescription),
contentType: 'application/json',
success: function(data) {
self.Convocations.push(new Convocation(self.addSession(), self.addDesc()));
self.addDesc("");
self.addSession("");
},
error: function(err) {
alert(err.status + " : " + err.statusText);
}
});
我没有测试代码,但它应该可以工作。
我正在尝试将数据从我的 Javascript 发送到我的 post 方法控制器。我将淘汰赛作为从 Javascript 绑定到我的视图的方法。
这是我的控制器,这就是 convocationData 为 null 的地方
public async Task<ActionResult> CreateConvocation(string convocationData)
{
string baseUrl = "http://localhost:8080";
HttpClient client = new HttpClient();
client.BaseAddress = new Uri(baseUrl);
这就是我尝试使用 jQuery:
调用方法的方式var tmpSession = self.addSession();
var tmpDescription = self.addDesc();
var convocationData = {
sessionCode: tmpSession,
description: tmpDescription
};
$.ajax({
url: '/Convocations/CreateConvocation',
type: 'POST',
dataType: 'json',
data: JSON.stringify(convocationData),
contentType: 'application/json',
success: function (data) {
self.Convocations.push(new Convocation(self.addSession(), self.addDesc()));
self.addDesc("");
self.addSession("");
},
error: function (err) {
alert(err.status + " : " + err.statusText);
}
});
像这样添加 [FromBody]
属性
[HttpPost]
public async Task<ActionResult> CreateConvocation([FromBody]string convocationData)
{
return text;
}
您可以在此处阅读更多内容 Accepting Raw Request Body Content with ASP.NET Web API
更新:
此外,请阅读 zgood 对您 post 的评论。而不是使用 JSON.stringify
你应该创建一个相应的模型,正如他在评论中所描述的那样。
更新 2:
JS模型class
class Convocation {
constructor(sessionCode, description) {
this.sessionCode = sessionCode;
this.description = description;
}
}
C# DTO class
public class Convocation
{
public string SessionCode{ get; set; }
public string Description { get; set; }
}
然后你可以更新你的动作方法到这个
[HttpPost]
public async Task<ActionResult> CreateConvocation([FromBody]Convocation convocation)
{
return text;
}
和ajax post到这个:
$.ajax({
url: '/Convocations/CreateConvocation',
type: 'POST',
dataType: 'json',
data: new Convocation(tmpSession, tmpDescription),
contentType: 'application/json',
success: function(data) {
self.Convocations.push(new Convocation(self.addSession(), self.addDesc()));
self.addDesc("");
self.addSession("");
},
error: function(err) {
alert(err.status + " : " + err.statusText);
}
});
我没有测试代码,但它应该可以工作。