在这个例子中,我只是试图使用Html.TextBoxFor()强制在一个文本框字段上的requiredAttribute.
它看起来像是由Orchard(LocalizedModelValidatorProvider)实现的自定义ModelValidatorProvider防止HTML5输入属性被渲染,具体来说:
data-val data-val-required
对于标准的DataAnnotations requiredAttribute.这些属性是jQuery.validate.unobtrusive工作所必需的.
LocalizedModelValidatorProvider将requiredAttribute映射到LocalizedrequiredAttribute,因此在为使用LocalizedrequiredAttribute装饰的模型属性呈现文本框输入时,Orchard ViewEngine中可能还会出现一个错误(或未实现的功能)?
我怀疑这不会发生:
tagBuilder.MergeAttributes(htmlHelper.GetUnobtrusiveValidationAttributes(name,Metadata));
(来自System.Web.Mvc.Html.InputExtensions)
我目前正在运行Orchard 1.3.9.
注意:一个棘手的解决方法是删除OrchardStarter模块中LocalizedModelValidatorProvider的注册,并将其默认返回到标准MVC 3提供程序,尽管如果可能,我很想打扰Orchard源代码(更不要说我可能需要本地化某些消息)…
解决方法
我也使用LocalizedrequiredAttribute,你可以看到那些AutoGenerated MetaDataModels.
我不知道Orcad,但我认为它像JQuery对话框一样呈现用户表单.
有两个困难:
第一步:您必须(重新)将对话框字段附加到用于将数据发送到服务器的表单.
第二:您必须(重新)解析表单以获得有效的无条件验证
你可以在这里找到一个完整的JQuery Dialog based Form,使用无阻碍的验证,并重点关注$.validator.unobtrusive.parse(form);
这种力量不受限制地分析ajax添加的控件.
在JQuery common tool box中查看$.fn.jqDialogFunction
$.fn.jqDialogFunction = function (idDiv,titre,okFunction,openFunction) { var dialogBox = $(idDiv) //$(dialogBox).removeClass("notdisplayed"); $(dialogBox).hide(); $(dialogBox).dialog({ title: titre,autoOpen: false,resizable: false,modal: true,minHeight: 450,minWidth: 800,open: openFunction,buttons: [ { text: "Ok",click: okFunction },{ text: "Cancel",click: function () { $(this).dialog("close"); } } ] }); var form = dialogBox.find("form"); if (form != null) { $.validator.unobtrusive.parse(form); } $(idDiv).dialog('open'); }
然后查看方法$.fn.SaveContent – > $(“#divStructurePage”).parent().appendTo(form);
$.fn.SaveContent = function () { $(this).dialog("close"); var content = tinyMCE.activeEditor.getContent(); $("#hidNewContent").val(content); var v = $("#StructurePage_FK_LayoutMenu_Translation").val(); var form = $("#frmManagedContent"); $("#divStructurePage").parent().appendTo(form); form.attr("action","/"+ $("#hidControllerName").val() +"/Save/" + v); form.submit(); }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。