如何将控制器操作绑定到引用的 dll 中的模型
How to bind a controller action to a model from a referenced dll
我正在尝试 POST JSON 我的 .NET Core 项目中的控制器操作。
相关控制器动作:
public IActionResult Post([FromBody]PrivateModel value) {/*Process value*/}
问题是 PrivateModel
来自引用的 dll。因此,自动模型绑定失败,value
始终为空。
我认为这是模型不是本地模型的一个因素,因为如果我在我的项目中创建 PrivateModel
结构的副本并使用它,数据就会正确绑定。使用这个精简副本不是一个可行的解决方案,因为我需要使用 PrivateModel
的功能。
有没有办法让模型绑定与引用 class 一起工作?
=> 看看代码,此参考目的。
您的API控制器,参数名称与ajax数据相同,例如[数据:参数]参数
您的 Json post 数据成员与您的引用 dll class 属性相同。
API 控制器
//Also you can use ActionResult
public HttpResponseMessage controller(Parameter param)
{
return Json // Return Json
}
参考 DLL class 例如
public class Parameter
{
public string publish { get; set; }
public string user { get; set; }
}
Javascript按钮点击功能
function RunDemand() {
var param = '{ publish : "On Demand",user : "Ankit" }';
$.ajax({
url: "/api/controller",
type: "POST",
data: param,
contentType: "application/json; charset = utf-8",
success: function (data) {
if (data.success) {
//Do Process
}
else {
//Do Process
}
}
});
}
是正确的。尝试从引用的 dll 绑定模型不是问题。
PrivateModel
使用的自定义 JSON 序列化程序中存在错误,导致无法构建模型。我的本地副本没有 运行 出现此错误,因为我没有指定它们应使用自定义序列化程序。
修复序列化程序错误后,模型绑定工作正常,无需进一步更改我的代码。
我正在尝试 POST JSON 我的 .NET Core 项目中的控制器操作。
相关控制器动作:
public IActionResult Post([FromBody]PrivateModel value) {/*Process value*/}
问题是 PrivateModel
来自引用的 dll。因此,自动模型绑定失败,value
始终为空。
我认为这是模型不是本地模型的一个因素,因为如果我在我的项目中创建 PrivateModel
结构的副本并使用它,数据就会正确绑定。使用这个精简副本不是一个可行的解决方案,因为我需要使用 PrivateModel
的功能。
有没有办法让模型绑定与引用 class 一起工作?
=> 看看代码,此参考目的。
您的API控制器,参数名称与ajax数据相同,例如[数据:参数]参数
您的 Json post 数据成员与您的引用 dll class 属性相同。
API 控制器
//Also you can use ActionResult
public HttpResponseMessage controller(Parameter param)
{
return Json // Return Json
}
参考 DLL class 例如
public class Parameter
{
public string publish { get; set; }
public string user { get; set; }
}
Javascript按钮点击功能
function RunDemand() {
var param = '{ publish : "On Demand",user : "Ankit" }';
$.ajax({
url: "/api/controller",
type: "POST",
data: param,
contentType: "application/json; charset = utf-8",
success: function (data) {
if (data.success) {
//Do Process
}
else {
//Do Process
}
}
});
}
PrivateModel
使用的自定义 JSON 序列化程序中存在错误,导致无法构建模型。我的本地副本没有 运行 出现此错误,因为我没有指定它们应使用自定义序列化程序。
修复序列化程序错误后,模型绑定工作正常,无需进一步更改我的代码。