Asp.net mvc 4 MVC4.Net,隐藏字段上的控件
我想知道是否有可能在隐藏字段(HiddenFor或HiddenEditorFor)上设置控件(dataanotation) 我不这么认为,但我们永远不知道 有很多关于如何隐藏EditorFor的帖子,例如: 在我的例子中,在一个视图中,我有一个对WCF REST服务的jquery调用,在成功的情况下,它将填充我的EditorFor。我希望在该编辑器上应用所需的DataAnotation,是否可能 我认为只要EditorFor不可见,就无法应用DataAnotation。它是否有办法在隐藏的EditorFor上应用DataAnotationAsp.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
代码如下: 要隐藏编辑器,请执行以下操作:
@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一起工作的示例?