有人可以告诉我为什么显示“需要此字段”和“请插入数据库名称”而不是“请插入数据库名称”?
这是我的模特:
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>
答案 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)
即可。这将显示摘要。