C# 如何将存储在模型中的名称和值收集到字典中,并最终在mvc中将这些单独的变量合并成一个

C# 如何将存储在模型中的名称和值收集到字典中,并最终在mvc中将这些单独的变量合并成一个,c#,asp.net-mvc,C#,Asp.net Mvc,我的问题是继续从这个链接我的模型是这样的 public class UserModel { public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } public string Address { get; set; } } 我收集这个模型中绑定的两个不同的值,作为旧值和新值,我可以将它们作为参数发送给我的函数。我想在一个变量中收集这个模型的

我的问题是继续从这个链接我的模型是这样的

public class UserModel
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
    public string Address { get; set; }
}
我收集这个模型中绑定的两个不同的值,作为旧值和新值,我可以将它们作为参数发送给我的函数。我想在一个变量中收集这个模型的这些属性的名称,如Int、name、Age、Address,然后使用字典数据结构将其对应的旧值和新值放在两个不同的变量中,这样最后我可以将这三个不同的变量合并成一个单独的变量,并将它们转换为json,以便将它们正确地加载到我的网格中。我想以这种方式在网格中显示我的数据

列OldValue NewValue

名字叫约翰·约翰

地址adf adfret

10岁11岁


我已经在列表中这样做了。但由于我无法将三个单独的变量合并到列表中的不同变量中,所以我想使用字典数据结构进行合并。请帮助。

使用字典似乎没有必要,我不确定这将如何解决您的问题。我建议您创建一个包含要在视图中显示的3个属性的类

public class PropertiesVM
{
    public string Name { get; set; }
    public object OldValue { get; set; }
    public object NewValue { get; set; }
}
在控制器中

public JsonResult GetProperties()
{
  UserModel old = //
  UserModel new = //
  List<PropertiesVM> model = new List<PropertiesVM>();
  foreach (PropertyInfo propertyInfo in typeof(UserModel).GetProperties())
  {
    PropertiesVM prop = new PropertiesVM();
    prop.Name = propertyInfo.Name;
    prop.OldValue = propertyInfo.GetValue(old, null);
    prop.NewValue = propertyInfo.GetValue(new, null);
    propertyNameList.Add(prop);
  }
  return Json(model, JsonRequestBehavior.AllowGet);
}
在ajax成功回调中,类似于

$.each(data, function(index, item) {
  var row = $('<tr></tr>');
  row.append($('<td></td>').text(item.Name));
  row.append($('<td></td>').text(item.OldValue));
  row.append($('<td></td>').text(item.NewValue));
  $('table').append(row);
});

您使用的jquery网格是否明确要求您传递字典才能构建网格?@StephenMuecke没有明确要求的字典,我想使用它,这样我就可以在这个特定的示例中将三个单独的变量值添加到一个变量值中format@JeffFinn我的问题在此继续,请提供帮助。然后,您只需传递一个集合,该集合可以是包含3个属性的匿名对象,例如ColumnName、OldValue和NewValue。不需要字典。这里的学生是什么类型的?这个答案对我帮助很大。但我想让它充满活力。我们在这里放置typeofUserModel的方式,现在UserModel在这里不是固定的,我将在运行时以这种方式获得它;字符串fullName=MessageCompose.Models.+型号名称;Type Type=Type.GetTypefullName;Object obj=Activator.CreateInstancetype;所以我想要的不是typeofUserModel,而是typeofobj,但这里不允许这样。请帮我怎么做..GetProperties只是一个类型的方法。如果您的Type=Type.GetTypefullName;,然后只需在type.GetProperties{中使用foreach PropertyInfo PropertyInfo。。。