2017-07-30 60 views
1

我想修改脚手架控制器的模板,检查模型是否包含某些属性,如果是,请编写c#代码以为其分配一些值。所以在我的模板中,写入Create actionresult(post)的部分:.net MVC脚手架模板:检查模型是否包含属性

 [HttpPost] 
     [ValidateAntiForgeryToken] 
<# if (UseAsync) { #> 
     public async Task<ActionResult> Create(<#= bindAttribute #><#= ModelTypeName #> <#= ModelVariable #>) 
<# } else { #> 
     public ActionResult Create(<#= bindAttribute #><#= ModelTypeName #> <#= ModelVariable #>) 
<# } #> 
     { 



    <# 
    if (THE MODEL CONTAINS A PROPERTY NAMED "creation_date")) { 
    #> 
     <#= modelVariable #>.creation_date = DateTime.Now; 
    <# } #> 

有没有办法做到这一点?

回答

0

好吧,我发现自己回答,不知道它的最好的解决方案,但它的工作很好:

<# 
bool entityWithCreationDate = false; 
foreach (PropertyMetadata property in ModelMetadata.Properties) { 
    if(property.PropertyName == "creation_date") { entityWithCreationDate=true; break; } 
} 
if(entityWithCreationDate==true) { 
#> 
     <#= ModelVariable #>.creation_date = DateTime.Now;  
<# 
} 
#> 
+0

你可以使用LINQ'如果(ModelMetadata.Properties.Any(C =>ç简化了一点.PropertyName ==“creation_date”)){...}'请注意,如果您的t4尚未包含它们以支持LINQ,您可能需要添加汇编指令/导入 – pinkfloydx33