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

Featured

  • Uno Platform Wants Microsoft to Improve .NET WebAssembly in Two Ways

    Uno Platform, a third-party dev tooling specialist that caters to .NET developers, published a report on the state of WebAssembly, addressing some shortcomings in the .NET implementation it would like to see Microsoft address.

  • Random Neighborhoods Regression Using C#

    Dr. James McCaffrey from Microsoft Research presents a complete end-to-end demonstration of the random neighborhoods regression technique, where the goal is to predict a single numeric value. Compared to other ML regression techniques, advantages are that it can handle both large and small datasets, and the results are highly interpretable.

  • As Some Orgs Restrict DeepSeek AI Usage, Microsoft Offers Models and Dev Guidance

    While some organizations are restricting employee usage of the new open source DeepSeek AI from a Chinese company due to data collection concerns, Microsoft has taken a different approach.

  • Useful New-ish Features in .NET/C#

    We often hear about the big new features in .NET or C#, but what about all of those lesser known, but useful new features? How exactly do you use constructs like collection indices and ranges, date features, and pattern matching?

  • TypeScript 5.8 Beta Speeds Program Loads, Updates

    "TypeScript 5.8 introduces a number of optimizations that can both improve the time to build up a program, and also to update a program based on a file change in either --watch mode or editor scenarios."

Subscribe on YouTube