ASP.Net MVC3 - 自定义数据注释强制大写

时间:2011-07-01 21:12:47

标签: asp.net-mvc data-annotations uppercase

我想创建一个自定义数据注释,强制输入的数据是大写的。如果用户以小写字母键入内容,则应自动(并静默)将其转换为大写字母。这是验证问题。

我想要这样的事情:

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调用更改特定类名中的数据或强制。

3 个答案:

答案 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)

CSS:

.upperCase 
{
    text-transform: uppercase !important;
}

!important 不是强制性的。

查看(Razor):

@Html.EditorFor(model => model.Property, new { htmlAttributes = new { @class = "upperCase" } })

如果你使用传统的html,你只需要添加html属性class =&#34; upperCase&#34;在你的输入上。

HTML:

<input type="text" class="upperCase"/>

请参阅此处的示例:https://jsfiddle.net/ahLw7uq2/