2017-07-30 68 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