将EditorFor条目的第一个字母大写

时间:2013-07-01 23:54:32

标签: c# asp.net-mvc

我试图这样做,当用户输入一个值并提交它时,它存储的每个单词的首字母大写,其余的小写。我想在model.Name中执行此操作:

 @Html.EditorFor(model => model.Name)

我发现这个功能齐全的功能可以满足我的需求,但我不能为我的生活找出如何将两者结合起来:

s = System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(s.toLower());

我会非常感谢任何帮助,我一直在努力解决这个问题,而且还没有显示出来。

3 个答案:

答案 0 :(得分:2)

考虑到您的字符串位于名为“strSource”的变量中,那么您可以执行以下操作:

char.ToUpper(strSource[0]).ToString() + strSource.Substring(1).ToLower();

或者,更好的解决方案是创建extension method

public static string ToUpperFirstLetter(this string strSource)
{
  if (string.IsNullOrEmpty(strSource)) return strSource;
  return char.ToUpper(strSource[0]).ToString() + strSource.Substring(1).ToLower();
}

答案 1 :(得分:0)

一个选项是制作自定义的EditorTemplate(视图 - >共享 - > EditorTemplates)

TitleString.ascx

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<System.String>" %>
<%=Html.TextBox("", System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(Model.ToLower()))%>

然后在您的视图中,您希望格式化,您可以执行以下操作:

@Html.EditorFor(model => model.Name, "TitleString")

有关详细信息,请查看:http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-1-introduction.html

答案 2 :(得分:0)

您可以在Controller上使用此功能,根据CultureInfo 将每个单词的第一个字母大写:

注意:“test”是从View返回的示例属性(如姓名,姓氏,地址等)

text = string.IsNullOrEmpty(text) ? string.Empty : CultureInfo.CurrentCulture.TextInfo.ToTitleCase(text.ToLower(new CultureInfo("tr-TR", false)));

请注意,此处还有一个额外的空值控制。希望这会有所帮助...