我正试图使我的网站上的下拉列表可由该网站的管理员修改.下拉列表上的选项作为IDropDownEntity与关联数据一起存储,例如,JobPriority具有字符串名称和字符串PriorityColor,分支具有字符串名称和AddressValueObject地址,等等.视图上的表单工作正常,但当我将其作为JSON发布到控制器时,关联的数据值没有解析/解析为空.
我使用IDropDownEntity并使用反射和定制属性来确定哪些属性是用户可编辑的,并将结果放入如下所示的DropDownEditViewModel中:
public class DropDownEditViewModel
{
//constructor()
public int Id { get; set; }
public string Name { get; set; }
public List<DDLEntityEditableProperty> EditableProperties { get; set; } = new();
}
public class DDLEntityEditableProperty
{
//constructor()
public string Name { get; set; }
public object? Value { get; set; }
}
在我的视图中,我有名称和EditableProperties的输入,以及将JSON发送到控制器操作的JQuery,该控制器操作接受DropDownEditViewModel,但在控制器操作上,值总是为空.
//javascript that generates JSON like so in a "var formData":
"Id": "1",
"Name": "Home Office",
"ExtraFields": [
{
"Name": "PhoneNumber",
"Value": "111-555-0000",
},
{
"Name": "Address",
"Value": {
"Address1": "404 Parse Street",
"Locality": "Notfound",
"PostCode": "00404"
}
}
]
}
//posts to controller using jQuery:
$.post("/DropDowns/EditGenericDropDownEntity", formData, function (result, status) {
ShowNotification(result.success, result.message);
});
发送到控制器操作
[HttpPost]
public async Task<IActionResult> EditGenericDropDownEntity(DropDownEditViewModel model)
{
//model's "Value" is always null
if (!ModelState.IsValid) return Json(new {success = false, text = ModelState.GetError()});
else return Ok();
}
我曾try 将列表更改为字典、字符串、对象,但得到了相同的问题(键遇到问题,值为空).我还try 将json作为字符串发送到控制器,以使用Newtonsoft进行解析,但也无法正常工作.有没有其他我可以采取的步骤,或者反思不是这个用例的一个选项?