从数据库获取所有模型变量值以查看ASP.NET Core MVC

时间:2018-12-04 17:44:17

标签: c# razor asp.net-core-mvc

我正在尝试将所有模型值打印到视图中。

我不想为每个值“硬编码”它,而是让它根据我的模型结构动态增长。这样一来,非开发人员就可以测试是否所有内容都正确地插入到数据库中,添加了哪些值等

当前,我的控制器中有这段代码,可以打印出模型中的所有变量,但是我不确定如何将某些特定对象的值连接到它上

var result = "";
var myAssembly = typeof(Person).GetTypeInfo().Assembly;
var properties = Converters.GetTypesInNamespace(myAssembly, "Domain.Models")
                           .FirstOrDefault(a => a.Name == "Person")
                           .GetProperties().ToList();

for (var i = 0; i < properties.Count; i++)
{
     result += properties[i].Name + Environment.NewLine;
}

return Ok(result);

这是我使用的自定义方法

public static Type[] GetTypesInNamespace(Assembly assembly, string nameSpace)
{
    return assembly.GetTypes()
                   .Where(t => String.Equals(t.Namespace, nameSpace, StringComparison.Ordinal))
                   .ToArray();
}

我想返回一个视图,该视图显示具有特定ID的Person的所有值,即Person / 5返回它的名字和姓氏,但是如果我现在向模型添加新变量-该视图将同时显示

1 个答案:

答案 0 :(得分:1)

假设您有一个名为Person的模型并具有一些属性:

public class Person
{
    public string FirstName { get; set; }

    public string LastName { get; set; }

    public int Age { get; set; }
}

添加控制器操作以接受人员ID:

 public IActionResult PestsonDetails(int id)
 {

        //you can search database with person id 
        Person p = new Person();
        p.FirstName = "FirstName";
        p.LastName= "LastName";
        p.Age = 28;

        Dictionary<string, string> personDetails = new Dictionary<string, string>();

        foreach (PropertyInfo prop in p.GetType().GetProperties())
        {

            var propName = prop.Name;
            var propValue = prop.GetValue(p, null);
            personDetails.Add(propName.ToString(),propValue.ToString());

        }
        ViewBag.personDetails = personDetails;
        return View();
  }

然后您可以在视图中获取属性名称和值,例如:

@foreach (var personProperty in ViewBag.personDetails)
{
    @personProperty.Key
    @personProperty.Value    
}