Practical .NET

Returning Simple Strings from Action Methods

When you want to return a string result -- either as text, HTML or XML -- then a ContentResult object gives you the right balance of simplicity and control.

Sometimes all you want to return from your Action method is some plain text (typically something like "Please go away" because something has gone horribly wrong). The easiest way to do that is to change the return value of your Action method to string and return your string:

Function GetCustomerInfo(Id As Integer?) As String
  Return "Please Go Away"
End Function

The problem is that you now have a method that can only return a string -- you can't, for example, return a View if everything goes well.

If you leave your return type as ActionResult, then you can use the Content helper method to return a ContentResult object. That gives you some extra support because the ContentResult object will specify the MIME type of the string you're returning. By default, that type is set to text/plain.

However, if you want to return some other type, you can specify that in the second parameter you pass to the Content method (the first parameter is the string you want to return).

For example, this code returns some emphatic text to the client as HTML when things go wrong:

Function GetCustomerInfo(Id As Integer?) As ActionResult
  Try
    '...code that might go wrong...
  Catch
    Return Content("<html><body><h1>Please Go Away</h1></body></html>", "text/html")
  End Catch
  End Try
End Function

It's just as easy to use this to return an XML string as an HTML string.

About the Author

Peter Vogel is a system architect and principal in PH&V Information Services. PH&V provides full-stack consulting from UX design through object modeling to database design. Peter tweets about his VSM columns with the hashtag #vogelarticles. His blog posts on user experience design can be found at http://blog.learningtree.com/tag/ui/.

comments powered by Disqus
Upcoming Events

.NET Insight

Sign up for our newsletter.

I agree to this site's Privacy Policy.