MVC EditorFor 到 Title Case
MVC EditorFor to Title Case
在 EditorFor 中如何将输入值转换为标题大小写?我知道做
@Html.EditorFor(model, new { htmlAttributes = new { @style = "text-transform:uppercase" } })
只会更改客户端,因此我需要在服务器端手动更改它。
我尝试添加 class text-capitalize
但似乎不成功。
提前致谢。
我建议在此 属性 的 getter 使用 .ToUpper()
执行此转换
get {
if (string.IsNullOrEmpty(_value))
{
return _value;
}
return _value.ToUpper();
}
以下是对绑定到 EditorFor
的视图模型的字符串属性使用标题大小写或句子大小写的解释:
1) 如果你想使用首字母大写,你可以在 getter 部分使用 ToTitleCase
方法设置它(根据你的要求将 CurrentCulture
更改为 InvariantCulture
),如下例所示:
private string _titleCase;
private System.Globalization.CultureInfo culture = System.Threading.Thread.CurrentThread.CurrentCulture;
public string TitleCaseProperty
{
get
{
if (string.IsNullOrEmpty(_titleCase))
{
return _value;
}
else
{
return culture.TextInfo.ToTitleCase(_titleCase.ToLower());
}
}
set
{
_titleCase = value;
}
}
查看使用情况
@Html.EditorFor(model => model.TitleCaseProperty, ...)
2)如果你想要句子大小写,使用正则表达式找出序列(引用自this similar issue)并像上面的getter部分那样做类似的方法:
private string _sentenceCase;
private Regex rgx = new Regex(@"(^[a-z])|[?!.:,;]\s+(.)", RegexOptions.ExplicitCapture);
public string SentenceCaseProperty
{
get
{
if (string.IsNullOrEmpty(_sentenceCase))
{
return _value;
}
else
{
return rgx.Replace(_sentenceCase.ToLower(), s => s.Value.ToUpper());
}
}
set
{
_sentenceCase = value;
}
}
查看使用情况
@Html.EditorFor(model => model.SentenceCaseProperty, ...)
更简单的方法
@Html.TextBoxFor(model.FieldName, new { @class = "uppercase" })
css:
.uppercase { text-transform:uppercase }
在 EditorFor 中如何将输入值转换为标题大小写?我知道做
@Html.EditorFor(model, new { htmlAttributes = new { @style = "text-transform:uppercase" } })
只会更改客户端,因此我需要在服务器端手动更改它。
我尝试添加 class text-capitalize
但似乎不成功。
提前致谢。
我建议在此 属性 的 getter 使用 .ToUpper()
get {
if (string.IsNullOrEmpty(_value))
{
return _value;
}
return _value.ToUpper();
}
以下是对绑定到 EditorFor
的视图模型的字符串属性使用标题大小写或句子大小写的解释:
1) 如果你想使用首字母大写,你可以在 getter 部分使用 ToTitleCase
方法设置它(根据你的要求将 CurrentCulture
更改为 InvariantCulture
),如下例所示:
private string _titleCase;
private System.Globalization.CultureInfo culture = System.Threading.Thread.CurrentThread.CurrentCulture;
public string TitleCaseProperty
{
get
{
if (string.IsNullOrEmpty(_titleCase))
{
return _value;
}
else
{
return culture.TextInfo.ToTitleCase(_titleCase.ToLower());
}
}
set
{
_titleCase = value;
}
}
查看使用情况
@Html.EditorFor(model => model.TitleCaseProperty, ...)
2)如果你想要句子大小写,使用正则表达式找出序列(引用自this similar issue)并像上面的getter部分那样做类似的方法:
private string _sentenceCase;
private Regex rgx = new Regex(@"(^[a-z])|[?!.:,;]\s+(.)", RegexOptions.ExplicitCapture);
public string SentenceCaseProperty
{
get
{
if (string.IsNullOrEmpty(_sentenceCase))
{
return _value;
}
else
{
return rgx.Replace(_sentenceCase.ToLower(), s => s.Value.ToUpper());
}
}
set
{
_sentenceCase = value;
}
}
查看使用情况
@Html.EditorFor(model => model.SentenceCaseProperty, ...)
更简单的方法
@Html.TextBoxFor(model.FieldName, new { @class = "uppercase" })
css:
.uppercase { text-transform:uppercase }