我正在尝试将所有模型值打印到视图中。
我不想为每个值“硬编码”它,而是让它根据我的模型结构动态增长。这样一来,非开发人员就可以测试是否所有内容都正确地插入到数据库中,添加了哪些值等
当前,我的控制器中有这段代码,可以打印出模型中的所有变量,但是我不确定如何将某些特定对象的值连接到它上
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返回它的名字和姓氏,但是如果我现在向模型添加新变量-该视图将同时显示
答案 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
}