2011-05-09 70 views
7

我正在嘗試使用自定義T4模板將新控制器添加到MVC 3項目。 Scott Hanselman在http://www.hanselman.com/blog/ModifyingTheDefaultCodeGenerationscaffoldingTemplatesInASPNETMVC.aspx上寫過我自己的模板,但我有興趣在MvcTextTemplateHost類中進一步挖掘,以瞭解它還提供了什麼,因此我們可以自定義一些更多的控制器,然後看看它是如何實現的與「添加控制器...」對話框進行交互。我在哪裏可以找到MvcTextTemplateHost的API規範?

但是我找不到(在谷歌搜索之後,當然......)對這個類的引用,也沒有MSDN或任何其他MS站點......任何想法?

感謝, 塞爾吉

回答

9
+0

這正是我在做什麼,因爲我發現,「添加控制器...」和「添加視圖...」只可以做的工作:-) 的一部分無論如何,是否有意義從腳手架模板實例化MvcTextTemplateHost?如果是這樣,它在哪個組裝?謝謝,斯科特! – Sergi 2011-05-13 06:43:27

3
using Microsoft.VisualStudio.Web.Mvc.Scaffolding.BuiltIn; 
using Microsoft.VisualStudio.Web.Mvc.UserInterface; 

C:\ WINDOWS \ Microsoft.NET \裝配\ GAC_MSIL \ Microsoft.VisualStudio.TextTemplating.10.0 \ v4.0_10.0.0.0__b03f5f7f11d50a3a \ Microsoft.VisualStudio.TextTemplating.10.0.dll Microsoft.VisualStudio .TextTemplating.10.0.dll

C:\ WINDOWS \ Microsoft.NET \裝配\ GAC_MSIL \ Microsoft.VisualStudio.TextTemplating.10.0 \ v4.0_10.0.0.0__b03f5f7f11d50a3a \ Microsoft.VisualStudio.TextTemplating.10.0.dll 微軟.VisualStudio.TextTemplating.Interfaces.10.0.dll

C:\ Program Files(x86)\ Microsoft Visua升工作室10.0 \ Common7 \ IDE Microsoft.VisualStudio.Web.Mvc.4.0.dll

如果添加論文作爲你的ASP.NET MVC Web項目的引用並將其設置爲正確的DLL爲你的MVC版本(上面的dll參考)2.0 3.01 0r 4。0(仍爲測試版)

您可以將T4代碼(不是標籤)複製到控制器中,並在MvcTextTemplateHost對象上提供智能感知和可調試性,以便設置正確的屬性數據等等在創建和有意義的數據填充它,看看它在做什麼(在理論上這將工作我希望)

以前如前所述在.net反射打開這些會透露一些信息。我沒有看過MVCScaffolding的代碼,它在我的待辦事項列表上的codeplex上)。我現在的問題是在VS.NET 2010 T4中運行時在MvcTextTemplateHost中如何填充RelatedProperties以及如何填充它們。

還可以使用有形的T4編輯器的智能感知的。

5
public bool AddActionMethods { get; set; } 
internal ProjectItem AreaFolder { get; set; } 
public string AreaName { get; set; } 
public List<string> AssemblyPath { get; set; } 
public bool AutoEventWireup { get; set; } 
public List<string> ContentPlaceHolderIDs { get; set; } 
public Type ContextType { get; set; } 
public string ControllerName { get; set; } 
public string ControllerRootName { get; set; } 
public string EntitySetName { get; set; } 
public CompilerErrorCollection Errors { get; set; } 
[Dynamic] 
public object ExtendedProperties { [return: Dynamic] get; } 
public Encoding FileEncoding { get; set; } 
public string FileExtension { get; set; } 
public Version FrameworkVersion { get; set; } 
internal AppDomain GenerationAppDomain { get; set; } 
public bool IsContentPage { get; set; } 
public bool IsPartialView { get; set; } 
public string MasterPageFile { get; set; } 
IList<string> ITextTemplatingEngineHost.StandardAssemblyReferences { get; } 
IList<string> ITextTemplatingEngineHost.StandardImports { get; } 
public Type ModelType { get; set; } 
public string Namespace { get; set; } 
public string OutputFileExtension { get; set; } 
public IPluralizer Pluralizer { get; set; } 
public string PrimaryContentPlaceHolderID { get; set; } 
public PrimaryKey[] PrimaryKeys { get; set; } 
public bool ReferenceScriptLibraries { get; set; } 
public Dictionary<string, RelatedModel> RelatedProperties { get; set; } 
public string TemplateFile { get; set; } 
public Type ViewDataType { get; set; } 
public string ViewDataTypeName { get; set; } 
public string ViewName { get; set; } 
相關問題