Получить все значения переменных модели из базы данных для просмотра ASP.NET Core MVC - PullRequest
0 голосов
/ 04 декабря 2018

Я пытаюсь распечатать все значения моей модели в моем представлении.

Я не хочу «жестко» кодировать его для каждого значения, а скорее динамически увеличивать его в соответствии с моимструктура моделей.Это сделано для того, чтобы не разработчики могли проверить, правильно ли все вставлено в базу данных, какие значения добавлены и т. Д.

В настоящее время у меня есть этот код в моем контроллере, который выводит все переменные в моей модели, но яя не уверен, как подключить некоторые значения некоторых объектов к нему

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();
}

Я хотел бы получить представление, отображающеевсе значения для Person с определенным идентификатором, т.е. Person / 5 возвращает его FirstName и LastName, но если я теперь добавлю новую переменную в мою модель - представление также отобразит это

1 Ответ

0 голосов
/ 05 декабря 2018

Предположим, у вас есть модель с именем Person и некоторые свойства:

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

    public string LastName { get; set; }

    public int Age { get; set; }
}

Добавьте действие контроллера для принятия идентификатора лица:

 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    
}
...