3

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

我想要这样的东西:

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

4

3 回答 3

1

我可能是错的,但我没有看到使用属性执行此操作的方法。但是您始终可以为您的属性使用支持字段,如下所示:

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(); }
    }
}

当然,它更丑陋,但它有效。

于 2011-07-01T21:21:56.357 回答
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,是必不可少的。

对于编辑对于:

@Html.EditorFor(model => model.Nome, new { htmlAttributes = new { @class = "form-control", @onkeyup = "InputToUpper(this);" } })
于 2014-10-16T00:15:02.753 回答
0

您还可以使用 text-transform 属性在 CSS 中强制大写。(见此)

CSS:

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

!important不是强制性的。


查看(剃刀):

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

如果您使用传统的 html,您只需在输入中添加 html 属性 class="upperCase"。

html:

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

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

于 2016-05-19T20:35:18.210 回答