如何在Html.TextboxFor上强制大写

Bro*_*ato 13 asp.net-mvc

我想在我的视图中强制在文本框上使用大写字母.因此,当用户在文本框中键入内容时,文本会立即转换为大写或(替代)文本在提交表单时以大写形式转换,并且模型使用数据填充(在操作控制器中).也许有一些CSS或jquery解决方案,但我更喜欢一些MVC解决方案(如果可能的话).

这是我的观点:

@model Domain.Entities.ProjectTechnology

<script src="../../Scripts/Admin/_AddProjectTechnology.js" type="text/javascript"></script>

<div class="editor-label">Technologies</div>    

<div class="editor-field">

    @using (Ajax.BeginForm("_AddProjectTechnology", new AjaxOptions { HttpMethod = "POST",
                                                                  UpdateTargetId = "RemoveProjectTechnology",
                                                                  InsertionMode = InsertionMode.Replace,
                                                                  OnComplete = "AddProjectTechnologyCompleted" })) {    
        @Html.ValidationSummary(true)
        @Html.HiddenFor(m => m.ProjectID)
        @Html.EditorFor(m => m.TechnologyID)
        @Html.ValidationMessageFor(m => m.TechnologyID)          
    }
</div>
Run Code Online (Sandbox Code Playgroud)

这是我的模型:

public class ProjectTechnology
{
    public int     ProjectID   { get; set; }
    public string  TechnologyID    { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

有问题的文本框是这一行:@ Html.EditorFor(m => m.TechnologyID)

我该怎么办?

谢谢.

lei*_*ann 18

最简单的方法是IMO:

@Html.EditorFor(m => m.TechnologyID, new { htmlAttributes = new { @style = "text-transform:uppercase" } })
Run Code Online (Sandbox Code Playgroud)

  • `text-transform`只会将外观改为CAPS.您必须在服务器端手动转换为大写. (2认同)

小智 6

我在视图中的代码行是:

@Html.TextBoxFor(model => model.BldgNameAbbv, new {onkeyup="InputToUpper(this);"})
Run Code Online (Sandbox Code Playgroud)

相关的脚本是:

<script>
function InputToUpper(obj)
{
    if (obj.value!="")
    {
    obj.value = obj.value.toUpperCase();
    }
}
</script>
Run Code Online (Sandbox Code Playgroud)

这对我有用。使用 TextBoxFor 而不是 EditorFor 是必不可少的。


小智 6

对于EditorFor:

@Html.EditorFor(model => 
    model.Nome, 
    new { 
        htmlAttributes = new { 
            @class = "form-control", 
            @onkeyup = "InputToUpper(this);"
        } 
    }
)
Run Code Online (Sandbox Code Playgroud)


Dar*_*rov 5

您可以在属性的 getter 上执行此转换:

public class ProjectTechnology
{
    public int ProjectID { get; set; }

    private string _technologyId;
    public string TechnologyID 
    {
        get 
        {
            if (string.IsNullOrEmpty(_technologyId))
            {
                return _technologyId;
            }
            return _technologyId.ToUpper();
        }
        set
        {
            _technologyId = value;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 如果大写是业务规则,那么我只会在集合中使用ToUpper。 (2认同)