I am new to MVC and have not found a solution for this online.
I have the html as :
@Html.DisplayFor(model => model.Address1) <br />
I want all the first letter of address1 to be capital letters e.g. Something Road instead of something road.
Now I have a class client and property Address1 and using EF to get the address as follow:
public class MyDBContext : DbContext
{
public DbSet<Client> Clients { get; set; }
}
Hope it makes sense.
You could add a partial class for
Client
with a property that returnsAddress1
in title case:You would then use
TitleCaseAddress1
in your Razor:@Html.DisplayFor(model => model.TitleCaseAddress1) <br />
Reference: http://msdn.microsoft.com/en-us/library/system.globalization.textinfo.totitlecase(v=vs.100).aspx
It's best to keep the presentation layer and the data access layer separate. Create a view model that wraps or translates the ORM / entity framework objects.
I know that the original question referred to capitalizing every word in the whole string. But, I got here trying to find a solution to capitalizing the first letter of a string. I agreed with kiflay's answer as the best solution to the OP. But, expanded on it to modify only the first letter, in my usage.
CSS:
For anyone looking to do this strictly in Razor.
This example is converting the logged in user name. Replace with your string variable.
This gets first letter and converts to upper:
@(@User.Identity.GetUserName().ToString().Substring(0, 1).ToUpper())
This gets remaining string.
@(@User.Identity.GetUserName().ToString().Substring(1, User.Identity.GetUserName().ToString().Length - 1))
Just put them together like so to get the whole string.
@(@User.Identity.GetUserName().ToString().Substring(0, 1).ToUpper())@(@User.Identity.GetUserName().ToString().Substring(1, User.Identity.GetUserName().ToString().Length - 1))
easy solution could be
then use below css to capitalize your first letter then you done.
Here is the correct way to accomplish what you want, I've implemented it for you.
There is an
HtmlStringFormatter.Create()
which allow you to pass a delegate and make your own anonymous formatter.Code Sample:
If You to create a custom formatter, derive from
HtmlStringFormatter
and set its delegate property to whatever manipulation you want to do.Code Sample:
All the classes:
Don't forget to add the following lines to the Web.Config at the Views folder:
This will include the Formatters and the Helper Extension automatically so you won't need to include it inside every view that you want to use it in.