Asp.net mvc 4 MVC4.Net,隐藏字段上的控件

Asp.net mvc 4 MVC4.Net,隐藏字段上的控件,asp.net-mvc-4,hidden,editorfor,Asp.net Mvc 4,Hidden,Editorfor,我想知道是否有可能在隐藏字段(HiddenFor或HiddenEditorFor)上设置控件(dataanotation) 我不这么认为,但我们永远不知道 有很多关于如何隐藏EditorFor的帖子,例如: 在我的例子中,在一个视图中,我有一个对WCF REST服务的jquery调用,在成功的情况下,它将填充我的EditorFor。我希望在该编辑器上应用所需的DataAnotation,是否可能 我认为只要EditorFor不可见,就无法应用DataAnotation。它是否有办法在隐藏的Ed

我想知道是否有可能在隐藏字段(HiddenFor或HiddenEditorFor)上设置控件(dataanotation)

我不这么认为,但我们永远不知道

有很多关于如何隐藏EditorFor的帖子,例如:

在我的例子中,在一个视图中,我有一个对WCF REST服务的jquery调用,在成功的情况下,它将填充我的EditorFor。我希望在该编辑器上应用所需的DataAnotation,是否可能

我认为只要EditorFor不可见,就无法应用DataAnotation。它是否有办法在隐藏的EditorFor上应用DataAnotation


代码如下: 要隐藏编辑器,请执行以下操作:

@Html.EditorFor(model => model.VilleDepart, "CustomEditor", new {style = "display:none;" })
自定义编辑器:

@{
    string s = "";
    if (ViewData["style"] != null) {
        // The ViewData["name"] is the name of the property in the addtionalViewData...
        s = ViewData["style"].ToString();
    }
}

@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, new { style = s })
模型:

string _VilleDepart;
[Required]
[Display(Name = "Ville Départ")]
public string VilleDepart
{
    get
    {
        if (Commune != null) {
            return Commune.Commune1;
        }

        return _VilleDepart;
    }
    set {
        _VilleDepart = value;
    }
}
对WCF REST服务的JQuery调用:

$(document).ready(function () {
    $([document.getElementById("IVilleDepart"), document.getElementById("IVilleArrivee")]).autocomplete({
        source: function (request, response) {
            $.ajax({
                cache: false,
                type: "GET",
                async: false,
                dataType: "json",
                url: GetSearchCommunetURl + "(" + request.term + ")",
                success: function (data) {
                    //alert(data);
                    response($.map(data, function (item) {
                        return {
                            label: item['Commune'] + ' (' + item['CodePostal'] + ')',
                            val: item
                        }
                    }))
                },
                error: function (response) {
                    alert("error ==>" + response.statusText);
                },
                failure: function (response) {
                    alert("failure ==>" + response.responseText);
                }
            });
        },
        select: function (e, i) {
            if (e.target.id == "IVilleDepart") {
                VilleDepart = i.item.val;
                EVilleDepart.value = VilleDepart.Commune;
                ECodePostalDepart.value = VilleDepart.CodePostal;
                ECodeINSEEDepart.value = VilleDepart.CodeINSEE;

            }
            if (e.target.id == "IVilleArrivee") {
                VilleArrivee = i.item.val;
                EVilleArrivee.value = VilleArrivee.Commune;
                ECodePostalArrivee.value = VilleArrivee.CodePostal;
                ECodeINSEEArrivee.value = VilleArrivee.CodeINSEE;
            }
        },
        minLength: 2
    });
});
如果不隐藏EditorFor,我可以看到它在WCF REST服务调用和应用所需的DataAnotation后正确填充

还有其他隐藏编辑器for的方法,例如应用style='width:0px;高度:0px'

它隐藏但禁用所需的DataAnotation

如果我应用style='width:0px;高度:1px',我们没有看到太多的编辑器,但所需的数据站处于活动状态。

我在

(但我之前的搜索似乎很糟糕,在一些博客和网站上对隐藏字段的验证进行了处理)

要激活隐藏字段的验证,只需添加以下javascript行:

$.validator.setDefaults({ ignore: null });
而且它有效


显然,它不适用于mvc2,但自mvc3起就可以工作。

我认为DataAnnotation应用于字段,无论EditorFor是否隐藏。您能否发布一些不起作用的代码,您的ViewModel和View?是的,验证仍然有效。验证在hiddenfield上似乎不起作用,您是否有一些验证与HiddenFor一起工作的示例?