Upload
tyrone-james
View
222
Download
1
Tags:
Embed Size (px)
Citation preview
ASP.NET MVC:
CONTROLLERS & VIEWS
Jess ChadwickLead Code MonkeyInfragistics Website Team
Todd SnyderDevelopment Team Lead
Infragistics Experience Design Group
Controllers – Parameters
RouteData: Contains Name/Value Pairs Form, Query String, and/or Cookie Missing Reference/Nullable Types set to null
Nullable optional parameters
Base class: Request and Response Methods
Controllers – Action Results
ViewResult
RedirectResult
RedirectToRouteResult
ContentResult
JsonResult
EmptyResult
Controllers – Action Filters
Attach additional behaviors to actions Before & After Action Execution Before & After Result Execution
Useful for logging, compression, etc.
Testing Controller Actions
No requirement to test within ASP.NET runtime! Use RhinoMocks, TypeMock, Moq, etc. Create Test versions of the parts of the runtime you want
to stub
[TestMethod]public void ShowPostsDisplayPostView() { TestPostRepository rep = new TestPostRepository();
BlogController controller = new BlogController(rep); var result = controller.ShowPost(2);
Assert.AreEqual("showpost", result.ViewName); Assert.IsTrue(repository.GetPostByIdWasCalled); Assert.AreEqual(2, repository.LastRequestedPostId);}
View Engines - Definition
Figure out how to render the markup View Locator finds the template
Pluggable Web Forms, Nvelocity, Brail, Nhaml, etc.
Roll your own Implement IViewEngine
View Engines - WebFormViewEngine
Default engine based on Web Forms markup
Familiar Environment Layout: .master Content: .aspx User Controls: .ascx
View Engines - WebFormViewLocator
Standard, default layout:/Views
/{Controller Name}/*.aspx/*.ascx
/Shared/*.master/*.aspx/*.ascx
Why do we need UI Helpers?
More control = less done for you Avoid writing “boring” markup Encapsulate what varies Replace Web Forms server controls
Extension Methods Revisited
New .NET 3.0 feature Static Methods posing as built-in behavior Make your life a whole lot easier
Allow easy extensibility!
UI Helpers - Common/Useful Helpers
Form Helpers Url/Link/Content Helpers
Html.Hidden() Html.TextBox() Html.TextArea() Html.RadioButton() Html.RadioButtonList() Html.DropDownList()
method(name, value, attributes)
Html.ActionLink<T>() Html.RouteLink() Html.Encode() Html.AttributeEncode() Url.Action() Url.RouteUrl() Url.Encode(contentPath) Url.Content(contentPath)
User Controls Extension Methods
Html.RenderUserControl(virtualPath) Html.RenderUserControl(virtualPath, data)
Server Controls Traditional Web Forms style!
Third-Party Controls
DEMO: Create and use a user control
Filling the Gap
Roll your own Popular Frameworks
jQuery prototype JavaScriptMVC Rico script.aculo.us ASP.NET AJAX (client library)
DEMO: MVC & ASP.NET AJAX
Q & A(thanks!)
Jess ChadwickEmail: [email protected] Blog: http://blog.jesschadwick.com
Todd SnyderEmail: [email protected] Blog: http://blogs.infragistics.com/blogs/tsnyder
The Bits ASP.NET MVC Preview 3: http://asp.net/MVCASP.NET MVC Source Code: http://www.codeplex.com/aspnet
Quickstart http://quickstarts.asp.net/3-5-extensions/mvc/default.aspx
Videos ASP.NET: http://www.asp.net/learn/3.5-extensions-videos/ MIX: http://sessions.visitmix.com
Community/Blogs ASP.NET Forums: http://forums.asp.net/1146.aspx Scott Guthrie (ScottGu): http://weblogs.asp.net/scottgu/ Scott Hanselman: http://www.hanselman.com/blog/ Phil Haack: http://haacked.com/
Sample Apps MVC Samples: http://www.codeplex.com/mvcsamples CodeCampServer: http://codecampserver.org
Jess Chadwick
http://blog.jesschadwick.com
Todd Snyder
http://blogs.infragistics.com/blogs/tsnyder
Resources