6

我试图做到这一点,所以当用户输入一个值并提交它时,它以每个单词的第一个字母大写和其余小写的形式存储。我想为model.Name做这件事:

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

我发现这个简洁的功能可以满足我的需求,但我一生都无法弄清楚如何将两者结合起来:

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

我会非常感谢任何帮助,我一直在为此工作,但还没有什么可展示的。

4

3 回答 3

2

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

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

或者,更好的解决方案是创建一个扩展方法

public static string ToUpperFirstLetter(this string strSource)
{
  if (string.IsNullOrEmpty(strSource)) return strSource;
  return char.ToUpper(strSource[0]).ToString() + strSource.Substring(1).ToLower();
}
于 2013-07-02T01:34:47.977 回答
0

您可以根据 CultureInfo将每个单词的首字母大写,只需在 Controller 上使用它即可:

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

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

请注意,这里有一个针对空值的额外控件。希望这可以帮助...

于 2015-03-19T13:50:18.667 回答
0

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

标题字符串.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

于 2013-07-02T02:01:42.170 回答