【问题标题】:ValidationMessage is showing on page loadValidationMessage 在页面加载时显示
【发布时间】:2018-02-02 17:06:07
【问题描述】:

我有一段像这样的 Razor 代码:

<div class="form-group">
    @Html.Label("State", new { @class = "control-label col-md-4" })
    <div class="col-md-8">
        <div class="tt-container">
            @Html.Editor("StateName", new { htmlAttributes = new { @id = "StateName", @class = "form-control", @required="required" } })
        </div>
        @Html.ValidationMessage("StateName", "The State field is required", new { @class = "text-danger" })
    </div>
</div>

验证消息The State field is required 在页面加载时显示。我只想在用户尝试提交表单时显示该文本框是否为空。

如果我这样做:

@Html.ValidationMessage("StateName", "", new { @class = "text-danger" })

显然我没有看到任何验证消息,因为它是空的,但是当我单击提交并且该文本框为空时,我收到一条验证消息,上面写着This field is required

我正在寻找两种可能性中的一种。

对于第一个问题,如果相应的文本框为空,是否可以在单击提交按钮后显示验证消息?

对于第二个问题,我可以让那个错误消息像The State field is required那样更具描述性吗?

感谢任何帮助。

【问题讨论】:

    标签: javascript jquery validation razor


    【解决方案1】:

    你可以使用这个ValidationMessage辅助方法重载

    @Html.ValidationMessage("StateName")
    

    验证消息将是模型验证框架生成的消息,格式为“需要 {propertyName}”

    【讨论】:

    • 我知道这可行,但它需要模型的强类型属性。我所拥有的只是一个简单的文本框,当输入某些内容时..该值绑定到 hiddenfor 元素
    • StateName 不是强类型属性。只是一个供用户查看的文本框,但值绑定到强类型 hiddenfor 元素
    • 您也可以使用 ValidationMessage 辅助方法。使用采用属性名称的重载。查看更新后的答案。
    • 如果我这样做.. 我没有在错误消息中获得属性名称。我刚收到This field is required
    • 那是因为你没有使用视图模型。系统如何知道你的 stateName 是必需的?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-06
    相关资源
    最近更新 更多