实例介绍
T4MVC是一个专为ASP.NET MVC应用设计的T4模板,旨在创建强类型助手,从而在多个场合中避免了字面字符串的使用。例如,传统方式下您可能会这样写代码:
@Html.ActionLink("晚餐详情", "Details", "Dinners", new { id = Model.DinnerID }, null)而通过使用T4MVC,您可以更加简洁明了地表达相同的意图:
@Html.ActionLink("晚餐详情", MVC.Dinners.Details(Model.DinnerID))这只是众多便利之一!
T4MVC是MvcContrib项目的一部分,该项目隶属于Outercurve Foundation。它通过提供一种机制,极大地简化了ASP.NET MVC应用开发中的代码编写过程,使得开发者能够更加专注于业务逻辑的实现,而不是被重复的、易出错的字符串操作所困扰。
【实例截图】
【核心代码】
文件清单
└── T4MVC-d886c10ae239170bc963f139cbab59f5f3a22d38
├── BuildNugetPackages.cmd
├── CustomDictionary.xml
├── lib
│ ├── readme.txt
│ └── SomeClassLibrary.dll
├── License.txt
├── Linked Files
│ └── SomeLinkedFile.txt
├── README.md
├── SomeClassLibrary
│ ├── packages.config
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── SomeClassLibrary.csproj
│ ├── SomeClassLibrary.sln
│ └── SomeCompiledController.cs
├── T4MVCExtensions
│ ├── app.config
│ ├── AutoNamedRouteAttribute.cs
│ ├── DefaultModelUnbinder.cs
│ ├── GenericT4Extensions.cs
│ ├── IModelUnbinder.cs
│ ├── IModelUnbinderProvider.cs
│ ├── IT4MVCActionResult.cs
│ ├── ModelUnbinderHelpers.cs
│ ├── ModelUnbinderProviders.cs
│ ├── ModelUnbinders.cs
│ ├── packages.config
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── PropertiesUnbinder.cs
│ ├── T4Extensions.cs
│ ├── T4MVCAttribute.cs
│ ├── T4MVCExtensions.csproj
│ ├── T4MVCExtensions.nuspec
│ └── T4TypeHelper.cs
├── T4MVCHostMvcApp
│ ├── App_Start
│ │ └── BundleConfig.cs
│ ├── Areas
│ │ ├── break
│ │ │ ├── Controllers
│ │ │ │ ├── MyAbstractBaseController.cs
│ │ │ │ └── PostController.cs
│ │ │ └── Views
│ │ │ ├── Shared
│ │ │ │ └── SharedAreaView.txt
│ │ │ └── Web.config
│ │ ├── FeatureFolderArea
│ │ │ ├── FeatureFoo
│ │ │ │ ├── FeatureFooController.cs
│ │ │ │ ├── Foobar.txt
│ │ │ │ └── Index.txt
│ │ │ ├── InvalidFile.txt
│ │ │ └── SharedViews
│ │ │ └── SharedView.txt
│ │ └── Home
│ │ ├── Content
│ │ │ └── Home.css
│ │ ├── Controllers
│ │ │ └── HomeController.cs
│ │ └── Views
│ │ ├── Home
│ │ │ ├── EditorTemplates
│ │ │ │ └── SomeAreaEditorTemplate.ascx
│ │ │ └── SomeHomeView.txt
│ │ └── Web.config
│ ├── compilerconfig.json
│ ├── compilerconfig.json.defaults
│ ├── Content
│ │ ├── 7 My.Text-File Space.txt
│ │ ├── default
│ │ │ └── Zzz.txt
│ │ ├── FileWithNoExtension
│ │ ├── Hello$World.txt
│ │ ├── Hello World.txt
│ │ ├── Hello World.txt
│ │ ├── Less.css
│ │ ├── Less.less
│ │ ├── Less.min.css
│ │ ├── SASS.css
│ │ ├── SASS.min.css
│ │ ├── SASS.scss
│ │ ├── ShouldNotBeALink.cs
│ │ ├── Site.css
│ │ ├── SomeRandomName
│ │ │ └── SomeRandomName
│ │ │ ├── Hello$World.txt
│ │ │ ├── Hello World.txt
│ │ │ ├── Hello World.txt
│ │ │ └── SomeRandomName.txt
│ │ ├── StyleSheet.css
│ │ ├── StyleSheet.min.css
│ │ └── Sub Content-folder.test
│ │ ├── SomeT41.txt
│ │ ├── SomeT4.tt
│ │ └── SomeT4.txt
│ ├── ContentStatic
│ │ ├── Scripts
│ │ │ └── SomeOtherScript.js
│ │ └── TextFiles
│ │ └── readme.txt
│ ├── Controllers
│ │ ├── ControllerWithoutSuffix.cs
│ │ ├── DefaultController.cs
│ │ ├── HomeController.cs
│ │ ├── ManyControllers.cs
│ │ ├── ModelUnbinderController.cs
│ │ ├── SomeAsyncController.cs
│ │ ├── SubCtrls
│ │ │ └── SubSub
│ │ │ ├── T4Ctrl.cs
│ │ │ └── T4Ctrl.tt
│ │ └── TestAttributeControllers.cs
│ ├── Features
│ │ ├── Contact
│ │ │ ├── ContactController.cs
│ │ │ └── Index.txt
│ │ └── Pictures
│ │ ├── Detail.txt
│ │ ├── Index.txt
│ │ └── PicturesController.cs
│ ├── Global.asax
│ ├── Global.asax.cs
│ ├── GlobalSuppressions.cs
│ ├── Misc
│ │ └── MyCustomResult.cs
│ ├── Models
│ │ └── AccountModels.cs
│ ├── packages.config
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── Scripts
│ │ ├── jquery-1.3.2.js
│ │ ├── jquery-1.3.2.min.js
│ │ ├── jquery-1.3.2.min-vsdoc.js
│ │ ├── jquery-1.3.2-vsdoc.js
│ │ ├── jquery.validate.js
│ │ ├── jquery.validate.min.js
│ │ ├── jquery.validate.min-vsdoc.js
│ │ ├── jquery.validate-vsdoc.js
│ │ ├── MicrosoftAjax.debug.js
│ │ ├── MicrosoftAjax.js
│ │ ├── MicrosoftMvcAjax.debug.js
│ │ └── MicrosoftMvcAjax.js
│ ├── SomePortableArea
│ │ ├── Controllers
│ │ │ └── HomeController.cs
│ │ └── Views
│ │ └── Home
│ │ └── SomeHomeView.txt
│ ├── T4MVC Files
│ │ ├── break.MyAbstractBaseController.generated.cs
│ │ ├── break.PostController.generated.cs
│ │ ├── break.SharedController.generated.cs
│ │ ├── BuildNugetPackage.cmd
│ │ ├── ContactController.generated.cs
│ │ ├── Ctrl10Controller.generated.cs
│ │ ├── Ctrl11Controller.generated.cs
│ │ ├── Ctrl12Controller.generated.cs
│ │ ├── Ctrl13Controller.generated.cs
│ │ ├── Ctrl14Controller.generated.cs
│ │ ├── Ctrl15Controller.generated.cs
│ │ ├── Ctrl16Controller.generated.cs
│ │ ├── Ctrl17Controller.generated.cs
│ │ ├── Ctrl18Controller.generated.cs
│ │ ├── Ctrl19Controller.generated.cs
│ │ ├── Ctrl1Controller.generated.cs
│ │ ├── Ctrl20Controller.generated.cs
│ │ ├── Ctrl21Controller.generated.cs
│ │ ├── Ctrl22Controller.generated.cs
│ │ ├── Ctrl23Controller.generated.cs
│ │ ├── Ctrl24Controller.generated.cs
│ │ ├── Ctrl25Controller.generated.cs
│ │ ├── Ctrl26Controller.generated.cs
│ │ ├── Ctrl27Controller.generated.cs
│ │ ├── Ctrl28Controller.generated.cs
│ │ ├── Ctrl29Controller.generated.cs
│ │ ├── Ctrl2Controller.generated.cs
│ │ ├── Ctrl30Controller.generated.cs
│ │ ├── Ctrl31Controller.generated.cs
│ │ ├── Ctrl32Controller.generated.cs
│ │ ├── Ctrl33Controller.generated.cs
│ │ ├── Ctrl34Controller.generated.cs
│ │ ├── Ctrl35Controller.generated.cs
│ │ ├── Ctrl36Controller.generated.cs
│ │ ├── Ctrl37Controller.generated.cs
│ │ ├── Ctrl38Controller.generated.cs
│ │ ├── Ctrl39Controller.generated.cs
│ │ ├── Ctrl3Controller.generated.cs
│ │ ├── Ctrl40Controller.generated.cs
│ │ ├── Ctrl41Controller.generated.cs
│ │ ├── Ctrl42Controller.generated.cs
│ │ ├── Ctrl43Controller.generated.cs
│ │ ├── Ctrl44Controller.generated.cs
│ │ ├── Ctrl45Controller.generated.cs
│ │ ├── Ctrl46Controller.generated.cs
│ │ ├── Ctrl47Controller.generated.cs
│ │ ├── Ctrl48Controller.generated.cs
│ │ ├── Ctrl49Controller.generated.cs
│ │ ├── Ctrl4Controller.generated.cs
│ │ ├── Ctrl50Controller.generated.cs
│ │ ├── Ctrl51Controller.generated.cs
│ │ ├── Ctrl52Controller.generated.cs
│ │ ├── Ctrl53Controller.generated.cs
│ │ ├── Ctrl54Controller.generated.cs
│ │ ├── Ctrl55Controller.generated.cs
│ │ ├── Ctrl56Controller.generated.cs
│ │ ├── Ctrl57Controller.generated.cs
│ │ ├── Ctrl58Controller.generated.cs
│ │ ├── Ctrl59Controller.generated.cs
│ │ ├── Ctrl5Controller.generated.cs
│ │ ├── Ctrl60Controller.generated.cs
│ │ ├── Ctrl61Controller.generated.cs
│ │ ├── Ctrl62Controller.generated.cs
│ │ ├── Ctrl63Controller.generated.cs
│ │ ├── Ctrl64Controller.generated.cs
│ │ ├── Ctrl65Controller.generated.cs
│ │ ├── Ctrl66Controller.generated.cs
│ │ ├── Ctrl67Controller.generated.cs
│ │ ├── Ctrl68Controller.generated.cs
│ │ ├── Ctrl69Controller.generated.cs
│ │ ├── Ctrl6Controller.generated.cs
│ │ ├── Ctrl70Controller.generated.cs
│ │ ├── Ctrl71Controller.generated.cs
│ │ ├── Ctrl72Controller.generated.cs
│ │ ├── Ctrl73Controller.generated.cs
│ │ ├── Ctrl74Controller.generated.cs
│ │ ├── Ctrl75Controller.generated.cs
│ │ ├── Ctrl76Controller.generated.cs
│ │ ├── Ctrl77Controller.generated.cs
│ │ ├── Ctrl78Controller.generated.cs
│ │ ├── Ctrl79Controller.generated.cs
│ │ ├── Ctrl7Controller.generated.cs
│ │ ├── Ctrl80Controller.generated.cs
│ │ ├── Ctrl81Controller.generated.cs
│ │ ├── Ctrl8Controller.generated.cs
│ │ ├── Ctrl9Controller.generated.cs
│ │ ├── DefaultController.generated.cs
│ │ ├── FeatureFolderArea.FeatureFooController.generated.cs
│ │ ├── FeatureFolderArea.SharedViewsController.generated.cs
│ │ ├── HomeController.generated.cs
│ │ ├── Home.HomeController.generated.cs
│ │ ├── Home.SharedController.generated.cs
│ │ ├── install.ps1
│ │ ├── ModelUnbinderController.generated.cs
│ │ ├── NoControllerMatchingFolder_FooController.generated.cs
│ │ ├── PicturesController.generated.cs
│ │ ├── readme.txt
│ │ ├── SharedController.generated.cs
│ │ ├── SomeAsyncController.generated.cs
│ │ ├── T4CtrlController.generated.cs
│ │ ├── T4MVC.cs
│ │ ├── T4MVC.nuspec
│ │ ├── T4MVC.tt
│ │ ├── T4MVC.tt.hooks.t4
│ │ ├── T4MVC.tt.settings.xml
│ │ ├── TestAttributeYesAbstract2Controller.generated.cs
│ │ ├── TestAttributeYesControllerName3.generated.cs
│ │ ├── TestAttributeYesDerivedController.generated.cs
│ │ ├── TestAttributeYesName1Controller.generated.cs
│ │ ├── TestAttributeYesProcessed1Controller.generated.cs
│ │ └── TestAttributeYesProcessed2Controller.generated.cs
│ ├── T4MVCHostMvcApp.csproj
│ ├── Views
│ │ ├── Home
│ │ │ ├── 7 Some Home.View-Hello.txt
│ │ │ ├── About.aspx
│ │ │ ├── App_LocalResources
│ │ │ │ └── Qqq.txt
│ │ │ ├── DisplayTemplates
│ │ │ │ └── SomeDisplayTemplate.ascx
│ │ │ ├── DuplicateControl.ascx
│ │ │ ├── EditorTemplates
│ │ │ │ └── SomeEditorTemplate.ascx
│ │ │ ├── Index.aspx
│ │ │ ├── ManyControllers.aspx
│ │ │ ├── Qqq.Nested.Again.txt
│ │ │ ├── Qqq.Nested.txt
│ │ │ ├── Qqq.txt
│ │ │ ├── QqQ.txt2
│ │ │ ├── Qqq.txt3
│ │ │ ├── SomeName
│ │ │ │ └── SomeName
│ │ │ │ └── SomeName.txt
│ │ │ └── Sub Home
│ │ │ ├── Nested-Sub
│ │ │ │ └── 99 Super~Nested-View.txt
│ │ │ ├── Qqq.txt
│ │ │ ├── string.txt
│ │ │ ├── T4View.cs
│ │ │ └── T4View.tt
│ │ ├── NoControllerMatchingFolder.Foo
│ │ │ ├── Abcd.txt
│ │ │ └── DuplicateControl.ascx
│ │ ├── Shared
│ │ │ ├── AnotherPartial.ascx
│ │ │ ├── DuplicateControl1.ascx
│ │ │ ├── DuplicateControl.ascx
│ │ │ ├── Error.aspx
│ │ │ ├── Hello.js
│ │ │ ├── LogOnUserControl.ascx
│ │ │ └── Site.Master
│ │ └── Web.config
│ └── Web.config
├── T4MVCHostMvcApp.Tests
│ ├── App.config
│ ├── ModelUnbinderProviderTests.cs
│ ├── ModelUnbinderTests.cs
│ ├── packages.config
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── T4MVCHostMvcApp.Tests.csproj
│ └── T4MVCTest.cs
├── t4mvc.ruleset
├── T4MVC.sln
├── T4MVCVB
│ ├── install.ps1
│ ├── T4MVCVB.nuspec
│ ├── T4MVCVB.tt
│ └── T4MVCVB.tt.hooks.t4
├── T4MVC.vsmdi
└── TestRunConfig1.testrunconfig
60 directories, 264 files
标签:
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论