Welcome!

Silverlight Authors: Automic Blog, Michael Kopp, AppDynamics Blog, Kaazing Blog, Steven Mandel

Related Topics: Microsoft Cloud, Machine Learning , Silverlight

Microsoft Cloud: Blog Feed Post

Templated Helpers in ASP.NET MVC 2 (VS2010 Beta 2 Version)

Templated Helpers are one of the new features in ASP.NET MVC 2

Templated Helpers are one of the new features in ASP.NET MVC 2. The other day, Visual Studio 2010 Beta 2 came out and some of you may have noticed that it comes pre-equipped with a beta release of ASP.NET MVC 2. In short a templated helper is a way of using various combinations of implicit and explicit rules to automatically place partial controls wherever particular data types need to appear, either in edit mode or display mode.

So let's say you have a DateTime property on your model called MeetingDate. Rather than make every single view write its own (potentially contrasting!) code to render dates in view mode and in edit mode, you can now do something like this:

<%= Html.DisplayFor( m => m.MeetingDate ) %>
<%= Html.EditorFor( m=> m.MeetingDate) %>

The DisplayFor helper will look at the data type of the thing you're looking for and try and figure out how to render that item. If you don't override convention, it will look in the Shared/DisplayTemplates folder for a DateTime.ascx control. If you want the display template to be specific to a certain controller, it can also look under the Views/(ControllerName)/DisplayTemplates folder. This same rule applies to EditorFor. It will look for the special EditorTemplates folder to try and find a suitable control. By "control" here I'm actually referring to a partial view since technically there are no controls in the traditional ASP.NET sense in MVC.

There's another HTML helper that you can use in your top-level view to invoke the partial-view location heuristics for an entire model just by doing:

<%= Html.EditorForModel () %>

This will examine the data type of your strongly-typed view and go look in an EditorTemplates folder to find the appropriate partial view.

Finally, there's another way you can supply hints to the templated helper system. That's through the use of the UIHint attribute. The UIHint actually allows you to decorate your view model (you are using an isolated view model and not working against persistance objects directly, aren't you?) with hints as to which editor should be used. This is fantastic for drop-down lists because the underlying value of a dropdown list is usually the ID of the lookup column, which is just an Int. You can't infer from Int that you want the Country dropdown vs. the State dropdown vs. the Weapons dropdown. To tell the engine which template you want, you can use the UIHint attribute as follows:

[UIHint("CustomerStatusDropDown")]
public CustomerStatus CustomerStatus { get; set; }

Where CustomerStatus is another view model object that you've got with a Name/ID pair (In my case I did it this way to accomodate the data coming from an ADO.NET Data Service). When you do Html.DisplayFor on this particular property of this particular class, it will override the normal algorithm and go look for a DisplayTemplate called CustomerStatusDropdown.ascx. When you do Html.EditorFor, it will look for a file called CustomerStatusDropDown.ascx but in the EditorTemplates directory. This allows you to simply, cleanly, and elegantly control how you display and edit lookups.

If you want, you can control the template selection directly from the EditorFor method call:

<%= Html.EditorFor 
( cust => cust.BirthDate, "DateTime_jQuery") %>

You might use a pattern like this in order to allow some pages to edit date/times with a jQuery picker instead of a traditional date/time picker. The possibilities are endless.

The reason why I'm blogging about this now, only a few days after Beta 2 comes out, is because I think this way of arranging your UI is so, absolutely, positively crucial to a clean, elegant, easy to maintain ASP.NET MVC application that everybody should be getting in the habit of using templated helpers now so that by the time VS 2010 hits RTM, the use of templated helpers will be old hat and we'll all be one step closer to ridding the world of "tag soup" forever.

p.s. If you invoke some of these EditorFor and DisplayFor helpers without actually having a suitable control in the EditorTemplates or DisplayTemplates directory, you might find some pretty interesting results. For example, if you do EditorForModel, and there isn't a control for that data type in your EditorTemplates directory, the system will actually use Reflection. It will sift through the public properties of your model, and for each property it will do the equivalent of invoking EditorFor and LabelFor on that property. In short, it will scaffold you up a "best guess" editor for your entire object. The reason this is in a "p.s." is because such scaffolding is great for smoke testing, but rarely lasts long.

More Stories By Kevin Hoffman

Kevin Hoffman, editor-in-chief of SYS-CON's iPhone Developer's Journal, has been programming since he was 10 and has written everything from DOS shareware to n-tier, enterprise web applications in VB, C++, Delphi, and C. Hoffman is coauthor of Professional .NET Framework (Wrox Press) and co-author with Robert Foster of Microsoft SharePoint 2007 Development Unleashed. He authors The .NET Addict's Blog at .NET Developer's Journal.

IoT & Smart Cities Stories
Dion Hinchcliffe is an internationally recognized digital expert, bestselling book author, frequent keynote speaker, analyst, futurist, and transformation expert based in Washington, DC. He is currently Chief Strategy Officer at the industry-leading digital strategy and online community solutions firm, 7Summits.
The explosion of new web/cloud/IoT-based applications and the data they generate are transforming our world right before our eyes. In this rush to adopt these new technologies, organizations are often ignoring fundamental questions concerning who owns the data and failing to ask for permission to conduct invasive surveillance of their customers. Organizations that are not transparent about how their systems gather data telemetry without offering shared data ownership risk product rejection, regu...
Bill Schmarzo, author of "Big Data: Understanding How Data Powers Big Business" and "Big Data MBA: Driving Business Strategies with Data Science," is responsible for setting the strategy and defining the Big Data service offerings and capabilities for EMC Global Services Big Data Practice. As the CTO for the Big Data Practice, he is responsible for working with organizations to help them identify where and how to start their big data journeys. He's written several white papers, is an avid blogge...
When talking IoT we often focus on the devices, the sensors, the hardware itself. The new smart appliances, the new smart or self-driving cars (which are amalgamations of many ‘things'). When we are looking at the world of IoT, we should take a step back, look at the big picture. What value are these devices providing. IoT is not about the devices, its about the data consumed and generated. The devices are tools, mechanisms, conduits. This paper discusses the considerations when dealing with the...
Machine learning has taken residence at our cities' cores and now we can finally have "smart cities." Cities are a collection of buildings made to provide the structure and safety necessary for people to function, create and survive. Buildings are a pool of ever-changing performance data from large automated systems such as heating and cooling to the people that live and work within them. Through machine learning, buildings can optimize performance, reduce costs, and improve occupant comfort by ...
René Bostic is the Technical VP of the IBM Cloud Unit in North America. Enjoying her career with IBM during the modern millennial technological era, she is an expert in cloud computing, DevOps and emerging cloud technologies such as Blockchain. Her strengths and core competencies include a proven record of accomplishments in consensus building at all levels to assess, plan, and implement enterprise and cloud computing solutions. René is a member of the Society of Women Engineers (SWE) and a m...
Business professionals no longer wonder if they'll migrate to the cloud; it's now a matter of when. The cloud environment has proved to be a major force in transitioning to an agile business model that enables quick decisions and fast implementation that solidify customer relationships. And when the cloud is combined with the power of cognitive computing, it drives innovation and transformation that achieves astounding competitive advantage.
Poor data quality and analytics drive down business value. In fact, Gartner estimated that the average financial impact of poor data quality on organizations is $9.7 million per year. But bad data is much more than a cost center. By eroding trust in information, analytics and the business decisions based on these, it is a serious impediment to digital transformation.
In his keynote at 19th Cloud Expo, Sheng Liang, co-founder and CEO of Rancher Labs, discussed the technological advances and new business opportunities created by the rapid adoption of containers. With the success of Amazon Web Services (AWS) and various open source technologies used to build private clouds, cloud computing has become an essential component of IT strategy. However, users continue to face challenges in implementing clouds, as older technologies evolve and newer ones like Docker c...
Digital Transformation: Preparing Cloud & IoT Security for the Age of Artificial Intelligence. As automation and artificial intelligence (AI) power solution development and delivery, many businesses need to build backend cloud capabilities. Well-poised organizations, marketing smart devices with AI and BlockChain capabilities prepare to refine compliance and regulatory capabilities in 2018. Volumes of health, financial, technical and privacy data, along with tightening compliance requirements by...