我正在尝试自定义MVCScaffolding中使用的T4模板。
我想过滤掉具有NotMapped
属性的属性。
我的问题是属性集合似乎是空的。我尝试打印出如下所示的属性:
List<ModelProperty> properties = GetModelProperties(Model.ViewDataType, true);
foreach (ModelProperty property in properties) {
if (!property.IsPrimaryKey && !property.IsForeignKey) {
#>
<th>
@Html.LabelFor(x => x.First().<#= property.Name #>)
<!--
<#foreach(var attribute in property.Type.CodeType.Attributes)
{#>
Attribute: <#=attribute.GetType().Name#>
<#}#>
-->
</th>
<#
}
}
#>
我找不到任何实际有效的信息,到目前为止这是一个非常缓慢的反复试验。获取属性或让模板忽略未映射的属性的正确方法是什么?
答案 0 :(得分:1)
这不是您问题的确切答案,但会提供有关问题的更多信息。我的经历完全一样。关于这个问题有一些奇怪的事情:
我修改了代码,因此可以从Visual Studio外部运行:
string assemblyPath = Host.ResolveAssemblyReference("$(ProjectDir)$(OutDir)T4Mvc.dll");
更改为:
string assemblyPath = @"D:\AbsolutePath\bin\T4Mvc.dll";
然后我使用TextTransform.exe代替RMB&gt;运行自定义工具
使用
TextTransform.exe AjaxServices.tt -out AjaxServices.js
(您可以在以下位置找到TextTransform.exe:“C:\ Program Files(x86)\ Common Files \ microsoft shared \ TextTemplating \ 10.0”)。
此外,我已禁用了hosts特定标志。
从TextTransform.exe而不是VS执行时相同的模板工作得很好。看来这是VS的某种问题。 请尝试使用TextTransform。 exe并告诉它是否有效。