其他输入元素的输入验证错误?

时间:2011-09-01 13:26:47

标签: asp.net-mvc validation

我的模型有2个字段,“a”和“b”,如下所示:

class AbModel
{
    public string a {get;set;}

    [SomeValidation]
    public int b {get;set;}
}

现在“b”实际上隐藏在gui中,“a”显示了它的文本表示。

<div class="editor-field">
    <%= Html.HiddenFor(model => model.b, new { id = "ABModelEditor_b" })%>
    <%= Html.TextBoxFor(model => model.a, new { id = "ABModelEditor_a" })%>
    <input type="button" value="Change" onclick="AbModelEditorScript.showAbSelector(); return false;" />
</div>

使用空数据“保存”时生成以下内容:

<div class="editor-field">
    <input class="input-validation-error" id="ABModelEditor_b" name="b" type="hidden" value="">
    <input id="ABModelEditor_a" name="a" type="text" value="">
    <input type="button" value="Change" onclick="AbModelEditorScript.showAbSelector(); return false;" />
</div>

我需要将input-validation-error css类附加到“a”文本框而不是隐藏为“b”。

在我简单地使用jquery-script移动css-class之前,还有其他一些我应该考虑的方法,也许是一些内置的功能?

1 个答案:

答案 0 :(得分:1)

您使用不引人注目的验证吗?另一个选项是使用jQuery添加验证属性并重新验证表单...

$("#ABModelEditor_a").attr("data-val-required", "true"); //add your validation attributes to the input tag

var form = $("form");
form.removeData("validator").removeData("unobtrusiveValidation") // this will clear the validation from the form
$.validator.unobtrusive.parse(form); //reattach the validation

这将为您提供真正的客户端验证,但它仍然与您的模型不匹配。你必须填补服务器端的空白。

关于您对仅服务器端验证的评论。

您可以尝试手动将模型错误添加到模型状态。这应该在您返回时反映在您的视图中。

ModelState.AddModelError(string key, string errorMessage);