【发布时间】:2020-10-21 05:20:27
【问题描述】:
我正在尝试将数据从我的 Javascript 发送到我的 post 方法控制器。我将淘汰赛作为我从 Javascript 绑定到我的视图的方法。
这是我的控制器,这是 convocationData 为空的地方
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);
}
});
【问题讨论】:
-
您正在从 javascript 对象
convocationData传递 2 个参数(一个称为“sessionCode”,另一个称为“description”),但您的控制器操作仅接受一个名为“convocationData”的 1 个参数。您的服务端操作不知道也不关心您调用了您的 javascript 对象变量......只是它的属性和值。另外,我认为您不需要JSON.stringify您的数据对象。 -
另外,我会用
[HttpPost]装饰您的控制器操作,而不是将参数 1 逐个添加到操作方法中,而是创建一个与您从 javascript 发布的对象匹配的模型(属性名称和数据类型)。所以你的操作方法可能看起来像这样:public async Task<ActionResult> CreateConvocation(ConvocationData model)。然后只需在 C# 中使用正确的属性创建 POCO 类(ConvocationData)
标签: c# jquery asp.net knockout.js asp.net-core-mvc