This post is a play on Phil's "A Better Razor Foreach Loop". If you aren't familiar with templated delegates in Razor, you can follow the links in Phil's post.
Something I don't like to see in a view is the if null or empty check.
@if (!String.IsNullOrEmpty(User.Identity.Name)) { <span>Logged in as: @User.Identity.Name</span> }
There are a number of ways to remove the check, but the knowledge in Phil's post give you one more option - the HTML helper option.
public static class RazorExtensions { public static HelperResult Maybe(this string @string, Func<object, HelperResult> template) { return new HelperResult(writer => { if (!String.IsNullOrEmpty(@string)) { template(@string).WriteTo(writer); } }); } }
Now the view code can look like this:
@User.Identity.Name.Maybe(@<span>Logged in as: @item</span>)
Better? Or Worse?