【发布时间】:2017-07-26 17:22:54
【问题描述】:
我是 ASP.NET Core 的新手,我正在尝试将视图模型发布到我的控制器(我认为)。
型号:
public class ToolModel
{
public ToolModel() { }
public string text { get; set; }
public string type { get; set; }
public string name { get; set; }
}
控制器
[HttpPost("/Utilities/Tool/{type}/{process}")]
public IActionResult ToolProcess(ToolModel model, string type, string process)
{
var test = model.text;
var result = new Services.ToolServices().exec(model, type, process);
return Ok(result);
}
查看
var model = {
text: "Test_text",
type: "test",
name: "test_name"
}
function post(model) {
var url = '/Utilities/Tool/Test/Edit';
$.ajax({
url: url,
data: JSON.stringify(model),
type: 'POST',
success: function () {
alert("all good");
},
error: function () {
alert(":(");
}
});
}
我目前能够在我的控制器中到达一个断点,但模型值为空。我尝试了此过程的各种组合,包括将 [FromBody] 添加到控制器参数中。当我添加 [FromBody] 时,我根本没有到达断点,请求失败,并且我收到错误:“未找到元素”。
起初我尝试将 ToolModel 模型传递给索引控制器中的视图,但我不知道如何将视图中的数据连接到模型(我尝试设置 @Model.text = "测试” 没有成功)。那没有用,所以我只是将模型复制为 javascript 对象。根据我的阅读,它应该在我发布 json 时自动绑定到我的模型?
我对 ASP.NET Core 太陌生了,我什至不知道该用谷歌搜索什么,而且帖子的每一个变体对我来说都失败了。如何使用我的模型通过 ajax 从我的视图获取数据到我的控制器?每个人的做法似乎都不一样。
【问题讨论】:
-
使用 [DataContract] 装饰您的 ToolModel 类,并使用 [DataMember] 装饰每个属性。仅在方法签名中的 ToolModel 前面添加 [FromBody],然后重试。
-
我已经尝试过了,我得到了同样的“找不到元素”错误和 ajax 错误。
标签: c# json ajax asp.net-core