我想创建一个自定义数据注释,强制输入的数据是大写的。如果用户以小写字母键入内容,则应自动(并静默)将其转换为大写字母。这是不验证问题。
我想要这样的事情:
public class Address {
public string Address {get; set;}
public string City {get; set;}
[ForceUpperCase]
public string State{get; set;}
}
例如,当使用@HTML.EditorFor(x => x.State)时,我想创建的HTML来处理所有这些 - 我不想写jQuery调用更改特定类名中的数据或强制。
答案 0 :(得分:0)
我可能错了,但我没有看到使用属性执行此操作的方法。但您可以随时为您的财产使用支持字段,如下所示:
public class Address {
private string _state;
public string Address {get; set;}
public string City {get; set;}
public string State
{
get { return _state; }
set { _state = value.ToUpper(); }
}
}
当然,它更加丑陋,但它确实有效。
答案 1 :(得分:0)
视图中的代码行是:
@Html.TextBoxFor(model => model.BldgNameAbbv, new {onkeyup="InputToUpper(this);"})
关联的脚本是:
<script>
function InputToUpper(obj)
{
if (obj.value!="")
{
obj.value = obj.value.toUpperCase();
}
}
</script>
这对我有用。使用TextBoxFor而不是EditorFor是必不可少的。
对于EditorFor:
@Html.EditorFor(model => model.Nome, new { htmlAttributes = new { @class = "form-control", @onkeyup = "InputToUpper(this);" } })
答案 2 :(得分:0)
您还可以使用text-transform属性强制CSS中的大写。 (See this)
.upperCase
{
text-transform: uppercase !important;
}
!important 不是强制性的。
@Html.EditorFor(model => model.Property, new { htmlAttributes = new { @class = "upperCase" } })
如果你使用传统的html,你只需要添加html属性class =&#34; upperCase&#34;在你的输入上。
<input type="text" class="upperCase"/>
请参阅此处的示例:https://jsfiddle.net/ahLw7uq2/