2015-10-10 4 views
2

Мне нужно иметь доступ к текущим «имени контроллера» и «название области» в моих представлениях, когда я их создаю с помощью лесов MVC. В шаблоне контроллера, мы имеем следующие параметры:MVC Леса: получить текущее имя контроллера и название области в шаблоне T4

<#@ parameter type="System.String" name="ControllerRootName" #> 
<#@ parameter type="System.String" name="AreaName" #> 

мне нужны подобные параметры, на мой взгляд шаблонов (как список, создавать или детали). Как я могу получить доступ к этим двум параметрам?

ответ

1

Вот хромой обходной путь:

string controllerstring = ViewDataTypeName.Split('.').Last().ToString(); 
controllerstring = controllerstring + "s"; 

Затем использовать другие параметры:

<a href="@Url.Action("Index","<#= controllerstring #>")" title="@Resources.Cancel"> 
1

In The view.ps1 файл передать параметры следующим образом для создания представлений

# Render the T4 template, adding the output to the Visual Studio project 
$outputPath = Join-Path $outputFolderName $ViewName 
Add-ProjectItemViaTemplate $outputPath -Template $Template -Model @{ 

    IsContentPage = [bool]$Layout; 
    Layout = $Layout; 
    SectionNames = $SectionNames; 
    PrimarySectionName = $PrimarySectionName; 
    ReferenceScriptLibraries = $ReferenceScriptLibraries.ToBool(); 
    ViewName = $ViewName; 
    PrimaryKeyName = $primaryKeyName; 
    ViewDataType = [MarshalByRefObject]$foundModelType; 
    ViewDataTypeName = $foundModelType.Name; 
    RelatedEntities = $relatedEntities; 
    MController = $Controller; 
    MArea = $Area; 
} -SuccessMessage "Added $ViewName view at '{0}'" -TemplateFolders $TemplateFolders -Project $Project -CodeLanguage $CodeLanguage -Force:$Force 

И теперь в шаблоне View T4 используйте MArea и MController для получения имени контроллера.

Ниже приведен пример

@using (Ajax.BeginForm("CreateP", "<#= Model.MController #>", 
     new AjaxOptions 
     { 
      HttpMethod = "Post", 
      UpdateTargetId = "Def", 
      InsertionMode = InsertionMode.Replace, 
      LoadingElementId="divloading", 
      OnSuccess = "done", 
      OnFailure ="FailureAlert" 

     }))