【问题标题】:Get all model variable values from database to view ASP.NET Core MVC从数据库中获取所有模型变量值以查看 ASP.NET Core MVC
【发布时间】:2018-12-04 17:44:16
【问题描述】:

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

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

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

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 返回它的 FirstName 和 LastName,但如果我现在向我的模型添加一个新变量 - 该视图将也显示出来

【问题讨论】:

  • 如标签model-view-controller 中所述,请勿将该标签用于asp.net-mvc
  • 为什么不在 ViewModel 上使用 Dictionary&lt;string, string&gt; 作为属性并在视图中循环遍历它?

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


【解决方案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    
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-28
    • 2021-01-16
    相关资源
    最近更新 更多