ASP.NET-如何在ViewModel类中设置可选字段?

时间:2019-07-07 07:15:17

标签: asp.net json asp.net-mvc asp.net-core asp.net-web-api

正在研究ASP.NET项目,我现在遇到了一个问题。

  • 前端数据
fruits = [
    {
        type: "First",
        size: 50,
        weight: 120,
        optionalParam1: "String",
        optionalParam2: 152
    },
    {
        type: "Second",
        size: 12,
        weight: 160,
        optionalParam3: "Another String",
        optionalParam4: 169
    },
    {
        type: "Third",
        size: 15,
        weight: 190,
        optionalParam1: "String for Third",
        optionalParam5: [1, 2]
    }
]

saleInfo = {
    param1: 12,
    param2: "string",
    param3: 150
}
  • ViewModel类

public class FruitViewModel {
    public Dictionary<string, dynamic>[] fruits;
    public Dictionary<string, dynamic> saleInfo;
    public int total;
    public Dictionary<string, dynamic> prevInfo;
}

只想将此信息存储到sql服务器并从sql db恢复它们。但是我不确定为此使用Dictionary是否正确。

您会指导我如何接收此信息并将其保存到sql db吗? 还有如何从sql db恢复此信息并将其发送到前端?

PS。这里的prevInfo参数与saleInfo参数相同,但是顾名思义,它是可选的。对于请求为空,仅可用于响应。

2 个答案:

答案 0 :(得分:0)

列表很好用

第一个创建一个类,该类反映您的前端期望,例如:

public class FruitModel {
     public string type { get; set; },
     public int size { get;set; },
     //the rest of properties you want
}

然后您的ViewModel开始看起来像这样:

public class FruitViewModel {
    public List<FruitModel> fruits;

    //change the rest to match
    public Dictionary<string, dynamic> saleInfo;
    public int total;
    public Dictionary<string, dynamic> prevInfo;
}

该列表将在前端序列化为Array。您还需要进行一些操作,因为您的数据将被封装到一个holder对象中。

如果在名为apiData的变量中获取数据,则将使用apiData.fruits访问其余数据,例如,第一项是apiData.fruits [0]。

如果您想使前端的生活变得轻松,您要做的就是将响应数据直接分配给变量,例如:

fruits = apiData.fruits;

然后就不需要改变了。

答案 1 :(得分:0)

在 VB 中,当使用 EF 时,您可以通过添加 ?到模型中字段定义的末尾(即使其可为空)。字符串不需要这个。 例如

        Public Property optionalparam1 As String
        Public Property optionalparam2 As Integer?
        Public Property optionalparam3 As String
        Public Property optionalparam4 As Integer?

再。可选参数 5,不确定数组和对象元素,我现在正在研究它。祝你好运;)

更新:数组就像字符串,它们是引用,所以总是可以为空的,所以需要特殊处理。