c# - 有没有办法为 ModelMetadata.RelatedEntities 获取 ModelMetadata.Properties?

标签 c# asp.net-mvc-5 t4 scaffolding

我一直在阅读 Microsoft.AspNet.Scaffolding.Core.Metadata命名空间;但是,我是这个对象模型的新手,也许我忽略了一些东西。我正在创建 T4 文本模板,并希望为相关模型数据自动生成输出。类似于 ModelMetadata.RelatedModelMetadata.ModelMetadata.PropertyMetadata 即

foreach (PropertyMetadata property in ModelMetadata.Properties) {
  if (property.IsAssociation) {
    RelatedModelMetadata relatedModel = property.RelatedModel
    foreach (PropertyMetadata relatedProperty in relatedModel.Properties) {
      // Do Something
    }
  }
}

这当然不能作为 RelatedModelMetadata对象没有属性集合;事实上,所有 RelatedModelMetadata 属性都是字符串。

任何提示都是技巧,您可能会感激不尽。

谢谢!

最佳答案

在您的 View 生成模板中,您可以访问 Model.ModelMetadata.Navigations 属性。这与 RelatedModelMetadata“相似”...我在引号中重复“相似”...相似性可能更多的是意图,而不是功能。

@foreach (var property in Model.ModelMetadata.Navigations)
{
   //I do what I want!
}

每个 property 都给你属性

  • 关联属性名称:字符串
  • 显示属性名称:字符串
  • 实体集名称:字符串
  • ForeignKeyPropertyNames:字符串数组
  • PrimaryKeyNames :字符串数组
  • 短类型名称:字符串
  • 类型名称:字符串

关于c# - 有没有办法为 ModelMetadata.RelatedEntities 获取 ModelMetadata.Properties?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29978398/

相关文章:

c# - Monobjc::添加 NSStatusItem

c# - 如何从输出参数获取值,同时提供一个值作为输入?

asp.net - 在 Visual Studio 中禁用浏览器链接选项是否明智?

asp.net - 为什么我在共享主机上不断收到 HTTP 403 错误?

c# - 包含文件的 T4 "header guard"

c# - 在 Azure 中运行时使用自定义范围时 DefaultAzureCredential().GetTokenAsync 失败

c# - 在使用 asp.net 尝试登录 5 次失败后,如何将用户帐户锁定 30 分钟?

asp.net-mvc - 如何重载 MVC Controller 以避免重复公共(public)代码?

asp.net-mvc-3 - 即使文件不存在,MVC3/T4 自定义脚手架也会给出文件存在错误

.net - 主机特定在 t4 模板中意味着什么?