Определить наследование классов в шаблоне t4 - PullRequest
0 голосов
/ 27 апреля 2018

Можете ли вы обнаружить унаследованные свойства класса в шаблоне t4?

У меня есть два класса, вот так:

public class User : ManagedRecord
{
   public int UserId { get; set;}
   public string UserName { get; set;}
}

public abstract class ManagedRecord
{
   public int Deleted { get; set;}
   public DateTime CreatedDate { get; set;}
}

Когда шаблон t4 создает поля на основе пользователя, он сначала размещает поля ManagedRecord, а затем поля для пользователя.

Есть ли способ обнаружить унаследованные поля класса, чтобы я мог обрабатывать их по-разному?

Шаблон t4 предназначен для шаблона страницы редактирования ASP.NET MVC 5, который создает поля формы на основе используемого класса.

Код t4 выглядит следующим образом:

<#@ template language="C#" HostSpecific="True" #>
<#@ output extension=".cshtml" #>
<#@ include file="Imports.include.t4" #>
@model <#= ViewDataTypeName #>
<#
    string boolType = "System.Boolean";
    int tabIndex = 1;
    bool autofocus = true;
    Version requiredMvcVersion = new Version("5.1.0.0");
    bool isControlHtmlAttributesSupported = MvcVersion >= requiredMvcVersion;


foreach (PropertyMetadata property in ModelMetadata.Properties) {
if (property.Scaffold && !property.IsAssociation) {
#>
    @Html.EditorFor(model => model.<#= property.PropertyName #>)
<#
}
#>

1 Ответ

0 голосов
/ 27 апреля 2018

Я нашел решение, которое сработало в моем сценарии. Вы можете украсить свойства, чтобы указать, что вы не хотите поменять столбцы.

using System.ComponentModel.DataAnnotations;
namespace YourNameSpace
{
    public abstract class ManagedRecord
    {
        [ScaffoldColumn(false)]
        public DateTime CreatedDate{ get; set; }

        [ScaffoldColumn(false)]
        public bool Deleted { get; set; }
    }
}
...