dev link2009 asp net mvc pattern and ani patterns chris hefley
DESCRIPTION
ASP.Net MVC: Patterns and AntiPatterns. Presentation from Devlink 2009, Nashville, TN, Chris Hefley http://indomitablehef.comTRANSCRIPT
![Page 1: Dev Link2009 Asp Net Mvc Pattern And Ani Patterns Chris Hefley](https://reader033.vdocument.in/reader033/viewer/2022061222/54be62aa4a7959bf048b459d/html5/thumbnails/1.jpg)
ASP.Net MVC : Patterns and AntiPatterns
Chris Hefley, Bandit Software
Blog: http://indomitablehef.comEmail: [email protected]
Twitter: @indomitablehef
![Page 2: Dev Link2009 Asp Net Mvc Pattern And Ani Patterns Chris Hefley](https://reader033.vdocument.in/reader033/viewer/2022061222/54be62aa4a7959bf048b459d/html5/thumbnails/2.jpg)
Model View Controller
HttpRequestASP.Net
ISAPI filter
HttpModules and
HttpHandlers
Some Class
RequestRouted
To
System.Web.UI.PageSystem.Web.Mvc.ControllerSome Model Retrieve Data from
Some View
Render
![Page 3: Dev Link2009 Asp Net Mvc Pattern And Ani Patterns Chris Hefley](https://reader033.vdocument.in/reader033/viewer/2022061222/54be62aa4a7959bf048b459d/html5/thumbnails/3.jpg)
Anemic Controller
“Skinny Controller, Fat Model”
GOOD
![Page 4: Dev Link2009 Asp Net Mvc Pattern And Ani Patterns Chris Hefley](https://reader033.vdocument.in/reader033/viewer/2022061222/54be62aa4a7959bf048b459d/html5/thumbnails/4.jpg)
Magic Strings BAD
![Page 5: Dev Link2009 Asp Net Mvc Pattern And Ani Patterns Chris Hefley](https://reader033.vdocument.in/reader033/viewer/2022061222/54be62aa4a7959bf048b459d/html5/thumbnails/5.jpg)
ASP.Net MVC Magic Strings
![Page 6: Dev Link2009 Asp Net Mvc Pattern And Ani Patterns Chris Hefley](https://reader033.vdocument.in/reader033/viewer/2022061222/54be62aa4a7959bf048b459d/html5/thumbnails/6.jpg)
Banishing Magic Strings: ViewsInstead of:
Use:
![Page 7: Dev Link2009 Asp Net Mvc Pattern And Ani Patterns Chris Hefley](https://reader033.vdocument.in/reader033/viewer/2022061222/54be62aa4a7959bf048b459d/html5/thumbnails/7.jpg)
Banishing Magic Strings: Controllers
![Page 8: Dev Link2009 Asp Net Mvc Pattern And Ani Patterns Chris Hefley](https://reader033.vdocument.in/reader033/viewer/2022061222/54be62aa4a7959bf048b459d/html5/thumbnails/8.jpg)
Banishing Magic Strings: Controllers
![Page 9: Dev Link2009 Asp Net Mvc Pattern And Ani Patterns Chris Hefley](https://reader033.vdocument.in/reader033/viewer/2022061222/54be62aa4a7959bf048b459d/html5/thumbnails/9.jpg)
One Action, One View GOODInstead of:
![Page 10: Dev Link2009 Asp Net Mvc Pattern And Ani Patterns Chris Hefley](https://reader033.vdocument.in/reader033/viewer/2022061222/54be62aa4a7959bf048b459d/html5/thumbnails/10.jpg)
One Action, One View
Do this:
![Page 11: Dev Link2009 Asp Net Mvc Pattern And Ani Patterns Chris Hefley](https://reader033.vdocument.in/reader033/viewer/2022061222/54be62aa4a7959bf048b459d/html5/thumbnails/11.jpg)
View Models GOOD
![Page 12: Dev Link2009 Asp Net Mvc Pattern And Ani Patterns Chris Hefley](https://reader033.vdocument.in/reader033/viewer/2022061222/54be62aa4a7959bf048b459d/html5/thumbnails/12.jpg)
ViewData Dictionary BAD
![Page 13: Dev Link2009 Asp Net Mvc Pattern And Ani Patterns Chris Hefley](https://reader033.vdocument.in/reader033/viewer/2022061222/54be62aa4a7959bf048b459d/html5/thumbnails/13.jpg)
ViewModel Base ClassInstead of ViewData Dictionary:
GOOD
![Page 14: Dev Link2009 Asp Net Mvc Pattern And Ani Patterns Chris Hefley](https://reader033.vdocument.in/reader033/viewer/2022061222/54be62aa4a7959bf048b459d/html5/thumbnails/14.jpg)
ViewModel Base Class
Instead:
![Page 15: Dev Link2009 Asp Net Mvc Pattern And Ani Patterns Chris Hefley](https://reader033.vdocument.in/reader033/viewer/2022061222/54be62aa4a7959bf048b459d/html5/thumbnails/15.jpg)
Use MVC Contrib w00t!
![Page 16: Dev Link2009 Asp Net Mvc Pattern And Ani Patterns Chris Hefley](https://reader033.vdocument.in/reader033/viewer/2022061222/54be62aa4a7959bf048b459d/html5/thumbnails/16.jpg)
JavaScript in Views BAD
If you must:
More goodness from MVC Contrib:
![Page 17: Dev Link2009 Asp Net Mvc Pattern And Ani Patterns Chris Hefley](https://reader033.vdocument.in/reader033/viewer/2022061222/54be62aa4a7959bf048b459d/html5/thumbnails/17.jpg)
Branching Logic in Views BAD
Or even this:
Don’t do this:
![Page 18: Dev Link2009 Asp Net Mvc Pattern And Ani Patterns Chris Hefley](https://reader033.vdocument.in/reader033/viewer/2022061222/54be62aa4a7959bf048b459d/html5/thumbnails/18.jpg)
Branching Logic in Views
![Page 19: Dev Link2009 Asp Net Mvc Pattern And Ani Patterns Chris Hefley](https://reader033.vdocument.in/reader033/viewer/2022061222/54be62aa4a7959bf048b459d/html5/thumbnails/19.jpg)
Branching Logic in Views
![Page 20: Dev Link2009 Asp Net Mvc Pattern And Ani Patterns Chris Hefley](https://reader033.vdocument.in/reader033/viewer/2022061222/54be62aa4a7959bf048b459d/html5/thumbnails/20.jpg)
HttpContext BAD
![Page 21: Dev Link2009 Asp Net Mvc Pattern And Ani Patterns Chris Hefley](https://reader033.vdocument.in/reader033/viewer/2022061222/54be62aa4a7959bf048b459d/html5/thumbnails/21.jpg)
IOC Container GOOD
![Page 22: Dev Link2009 Asp Net Mvc Pattern And Ani Patterns Chris Hefley](https://reader033.vdocument.in/reader033/viewer/2022061222/54be62aa4a7959bf048b459d/html5/thumbnails/22.jpg)
IOC Container
![Page 23: Dev Link2009 Asp Net Mvc Pattern And Ani Patterns Chris Hefley](https://reader033.vdocument.in/reader033/viewer/2022061222/54be62aa4a7959bf048b459d/html5/thumbnails/23.jpg)
Extensions to HtmlHelper GOOD
![Page 24: Dev Link2009 Asp Net Mvc Pattern And Ani Patterns Chris Hefley](https://reader033.vdocument.in/reader033/viewer/2022061222/54be62aa4a7959bf048b459d/html5/thumbnails/24.jpg)
DataBinding to Domain Object BAD
![Page 25: Dev Link2009 Asp Net Mvc Pattern And Ani Patterns Chris Hefley](https://reader033.vdocument.in/reader033/viewer/2022061222/54be62aa4a7959bf048b459d/html5/thumbnails/25.jpg)
Custom ActionResult GOOD
![Page 26: Dev Link2009 Asp Net Mvc Pattern And Ani Patterns Chris Hefley](https://reader033.vdocument.in/reader033/viewer/2022061222/54be62aa4a7959bf048b459d/html5/thumbnails/26.jpg)
Miscellaneous
• Use Html.Encode• jQuery!• Use AcceptVerbs Attribute on Controller
Methods (POST for those that modify Data)• Use ASP.Net MVC to create REST-ful APIs• Extension Methods to UrlHelper• Make good use of ActionFilters
![Page 27: Dev Link2009 Asp Net Mvc Pattern And Ani Patterns Chris Hefley](https://reader033.vdocument.in/reader033/viewer/2022061222/54be62aa4a7959bf048b459d/html5/thumbnails/27.jpg)
After-Market Parts GOOD
![Page 28: Dev Link2009 Asp Net Mvc Pattern And Ani Patterns Chris Hefley](https://reader033.vdocument.in/reader033/viewer/2022061222/54be62aa4a7959bf048b459d/html5/thumbnails/28.jpg)
Spark View Engine• Sparkviewengine.com
![Page 29: Dev Link2009 Asp Net Mvc Pattern And Ani Patterns Chris Hefley](https://reader033.vdocument.in/reader033/viewer/2022061222/54be62aa4a7959bf048b459d/html5/thumbnails/29.jpg)
S#arp Architecture
![Page 30: Dev Link2009 Asp Net Mvc Pattern And Ani Patterns Chris Hefley](https://reader033.vdocument.in/reader033/viewer/2022061222/54be62aa4a7959bf048b459d/html5/thumbnails/30.jpg)
Questions?
Chris Hefley, Bandit Software
Blog: http://indomitablehef.comEmail: [email protected]
Twitter: @indomitablehef