【发布时间】:2020-02-01 13:29:43
【问题描述】:
我正在使用 formio 在我的 asp.net 核心 mvc Web 应用程序中从 json 生成表单。我的模型定义如下。
public class MyRootModel
{
public Data data { get; set; }
public class Data
{
public Client client { get; set; }
public Contact contact { get; set; }
}
}
public class Client
{
public string Forename { get; set; }
public string Surname { get; set; }
public int? Gender { get; set; }
public DateTime DateofBirth { get; set; }
}
public class Contact
{
public string City { get; set; }
public string Street { get; set; }
public string Street2 { get; set; }
}
我的控制器上的 post 方法如下。
[HttpPost]
public MyResponse Next([FromBody] MyRootModel formCollection)
{
MyResponse myResponse = new MyResponse ();
myResponse.ReturnType = "Success";
myResponse.ReturnMessage = "Well done";
return myResponse ;
}
表单上的 Gender 是一个 html5 选择类型。提交表单时,我的控制器上的 formCollection 对象会自动初始化,因为 json 是从客户端传递的。但是,如果用户未在 Gender 下拉列表中选择任何值,则 formCollection 将显示为 null。我查看了正在传递的 json,并注意到 "gender": "null" 已传递,这就是 formCollection 显示为空的原因。即使我已将 Gender 定义为 int?在我的客户模型中。
我正在显示从下面的表单提交的 json 用于这两种情况。当用户选择 Gender 时,第一个场景可以正常工作。
formCollection 已正确初始化
{
"data": {
"client": {
"forename": "abc",
"surname": "def",
"gender": 2
},
"contact": {
"city": "ghi",
"street": "jkl"
},
"submit": true
},
"metadata": {}
}
通过以下 json 时,formColletion 变为 null
{
"data": {
"client": {
"forename": "dsfaasdf",
"surname": "asdf",
"gender": "null"
},
"contact": {
"city": "asdf",
"street": ""
},
"submit": true
},
"metadata": {}
}
我认为 int? 允许 null 所以我将 Gender 类型从 int 更改为 int? 但仍然无法正常工作。
【问题讨论】:
标签: json asp.net-mvc asp.net-core