ASP.NET MVC客户端验证消息错误

时间:2014-02-21 09:53:25

标签: c# asp.net asp.net-mvc razor

有人可以告诉我为什么显示“需要此字段”和“请插入数据库名称”而不是“请插入数据库名称”?

Screenshot

这是我的模特:

public class InstallViewModel
    {
        [Required(AllowEmptyStrings = false, ErrorMessage = "Please insert database name")]
        public string DatabaseName { get; set; }

这是我的观点:

<div class="input-group">
    <span class="input-group-addon">Database</span>
    @Html.TextBoxFor(w => w.DatabaseName, new { @class = "form-control", placeholder = "Database name" })
</div>
@Html.ValidationMessageFor(w=> w.DatabaseName)

谢谢。

编辑:

你能看到附加的图像吗?我在上传图片时遇到了一些问题。

视图是局部视图,这是整个局部视图:

@Html.ValidationMessageFor(w => w.DatabaseName)
    <div class="input-group">
        <span class="input-group-addon">Database</span>
        @Html.TextBoxFor(w => w.DatabaseName, new { @class = "form-control", placeholder = "Database name" })
    </div> 
    <br />
    @Html.CheckBoxFor(w => w.UseWindowsAuthentication, new { @checked = "checked" }) Use Windows Authentication<br /><br />
    <div class="wizard-sqlauth" style="display: none">
        <div class="input-group">
            <span class="input-group-addon">User name</span>
            @Html.TextBoxFor(w => w.UserName, new { @class = "form-control", placeholder = "User name" })
        </div>
        @Html.ValidationMessageFor(w => w.UserName)<br />
        <div class="input-group">
            <span class="input-group-addon">Password</span>
            @Html.PasswordFor(w => w.Password, new { @class = "form-control" })
        </div>
        @Html.ValidationMessageFor(w => w.Password)
    </div>

4 个答案:

答案 0 :(得分:2)

DatabaseName为“必需”,输入为空。 (只有占位符文本)

答案 1 :(得分:1)

您是否在javascript中的任何地方“手动”调用jquery验证,即

$('#myform').valid()

这将触发所需规则的默认值(“此字段是必需的。”),并在输入后将其作为标签附加,这正是您遇到的行为。

如果你真的需要同时使用(MVC的Unobstrusive验证+ jQuery验证),你可以配置jquery validation to ignore certain fields,例如

$('#myform').validate({
  ignore: '#databasefieldId'
});

答案 2 :(得分:-1)

您已将RequiredAttribute属性应用于属性DatabaseName,这意味着该属性必须包含值。

如果属性为null,空字符串(“”)或仅包含空格字符,则会引发验证异常。

答案 3 :(得分:-2)

您只需在div顶部添加@Html.ValidationMessageFor(w=> w.DatabaseName)即可。这将显示摘要。