如何将模型中存储的名称和值收集到 C# MVC 中的列表中

本文关键字:MVC 列表 模型 存储 | 更新日期: 2023-09-27 18:31:26

数据作为参数绑定到模型中到我的函数。我需要做的是将模型中属性的名称收集到一个列表中,我已经这样做了。此外,我需要将模型中绑定的值存储到列表中,然后将这些值添加并将其转换为 json,以便我可以轻松地将其加载到网格中。我的问题是我无法在列表中收集模型中绑定的值。

这是我的代码。

 public List<string> GetPropertiesNameOfClass(UserModel olduser,UserModel newuser)
    {
        List<string> propertyNameList = new List<string>();
        List<string> propertyOldValue = new List<string>();
        List<string> propertyNewValue = new List<string>();

        if (olduser != null)
        {
            foreach (var prop in olduser.GetType().GetProperties())
            {
                propertyNameList.Add(prop.Name);
               // propertyOldValue = prop.GetValue(olduser, null);
                //var value = prop.GetValue(this) ;
            }
        }
        if(newuser !=null)
        {
            foreach(var prp in newuser.GetType().GetProperties())
            {
                //propertyNewValue = prp.GetValue(this);
            }
        }
       // return propertyList + propertyOldValue + propertyNewValue;
    }

我通过以下方式获取属性名称列表 属性名称列表.添加(prop.姓名);但是对于值,我不知道如何在列表中绑定它们。请帮忙。我已经访问了此链接,但无法自行实现。

如何使用泛型列表从通用模型中获取属性名称和值?

如何将模型中存储的名称和值收集到 C# MVC 中的列表中

好的,

我认为这可能是您要做的,但是如果没有看到您的模型和预期输出正确格式化,就很难知道。

public List<string> GetPropertiesNameOfClass(UserModel olduser, UserModel newuser)
{
    var propertyNameList = new List<string>();
    var propertyOldValue = new List<object>();
    var propertyNewValue = new List<object>();
    foreach (var prop in olduser.GetType().GetProperties())
    {
        propertyNameList.Add(prop.Name);
        propertyOldValue.Add(prop.GetValue(olduser, null));
    }
    if(newuser !=null)
    {
        foreach(var prp in newuser.GetType().GetProperties())
        {
            propertyNewValue.Add(prp.GetValue(olduser, null));
        }
    }
    /* Convert To JSON Here */
    return formattedJson;
}

当您将项目添加到列表中时,您不能使用 + 操作符,您需要对单个对象使用 Add() 或对对象列表使用 AddRange()。

GetValue 返回了一个对象,所以我更改了要添加到 List 类型的列表。由于某种原因,ToString 无法在 GetValue 返回的对象上运行。

后续步骤的一些指示。

  1. 将返回类型更改为 JSON
  2. 查看使用字典来构建数据。创建一个 Object 类型来同时表示新旧用户可能很有用

    public class UserHistory
    {
        UserModel oldUser {get; set}
        UserModel newUser {get; set}
    }
    

如果您能提供有关如何构建数据的更多信息,我可以进一步帮助您。