Asp.net mvc 3 jQuery对话框上的MVC 3客户端验证
我正在使用jquery对话框显示许多表单,我希望在其中添加客户端验证。我通读了一些示例,说mvc 3已经以某种方式支持jquery客户端验证,但我尝试包括必要的脚本,我的表单如下:Asp.net mvc 3 jQuery对话框上的MVC 3客户端验证,asp.net-mvc-3,validation,jquery-dialog,Asp.net Mvc 3,Validation,Jquery Dialog,我正在使用jquery对话框显示许多表单,我希望在其中添加客户端验证。我通读了一些示例,说mvc 3已经以某种方式支持jquery客户端验证,但我尝试包括必要的脚本,我的表单如下: @using (Html.BeginForm("CreateFood", "Home", FormMethod.Post, new { id = "formData" })) { @Html.ValidationSummary(false, "Please fix these e
@using (Html.BeginForm("CreateFood", "Home", FormMethod.Post, new { id = "formData" }))
{
@Html.ValidationSummary(false, "Please fix these errors.")
当我试图在没有填写必填字段的情况下提交表格时,我仍然无法收到任何消息。有人能给我更多的想法/解释/例子吗
这里真的需要帮助。。。谢谢
更新(在“我的对话”的脚本中添加)
删除后,打开对话框:
// Once drop, open dialog to create food
options.drop = function (event, ui) {
// Get the ContainerImgName which food dropped at
var cimg = $(this).attr('id');
// Pass in ContainerImgName to retrieve respective ContainerID
// Once success, set the container hidden field value in the FoodForm
$.ajax({
url: '/food/getcontainerid',
type: 'GET',
data: { cImg: cimg },
success: function (result) { $('#containerID').val(result); }
});
clear();
$.validator.unobtrusive.parse($createdialog);
$createdialog.dialog('open');
};
对于每个动态生成的表单,在使用
$.validator.unobtrusive.parse
函数将此内容注入DOM后,需要手动运行验证程序。我遇到了相同的问题,通过以下方法解决了此问题:
$(name).dialog({
autoOpen: true,
width: options.witdth,
heigth: options.height,
resizable: true,
draggable: true,
title: options.title,
modal: true,
open: function (event, ui) {
// Enable validation for unobtrusive stuffs
$(this).load(options.url, function () {
var $jQval = $.validator;
$jQval.unobtrusive.parse($(this));
});
}
});
当然,您可以在对话框的关闭事件上添加验证,这取决于您正在做什么,在我的情况下,弹出窗口只是为了显示错误,所以我在加载内容时执行了验证。(此弹出窗口显示am操作结果)您好,很抱歉,我不太明白。。那么我需要通过函数解析的dom就是表单?还是对话?谢谢…@user834754,此表单最初不在DOM中,对吗?您可能是在AJAX请求之后插入它,然后在对话框中显示它。就是在你显示你需要解析的对话框的那一刻。嗨,这不管用。。我试图在对话框打开之前解析它,但我得到了奇怪的响应,一旦我点击提交,表单将显示在页面中,但不再显示在对话框中,你知道吗??谢谢…@user834754,您是否已将jquery对话框中的表单轴化了?如果您不这样做,它将简单地执行一个正常的提交到服务器并重新加载页面。我想我知道原因,因为在我的控制器上有一个提交操作的try/catch。如果我想在对话框中使用客户端验证,我是否不需要它??谢谢…嗨,我试过了,但还是不行。。尽管我无法填写必填字段,但在我的代码中,$jQval.unobtrusive.parse($(this))将向html元素添加装饰并绑定js验证函数,对话框在我单击submit event后关闭。您是否偶然通过AJAX提交?您在JS控制台中看到错误了吗?是否添加了@Html.EnableClientValidation(true);在视野中的某个地方?你能发布onclick/onsubmit函数吗(如果你正在使用它们的话)?嗨,实际上我正在使用拖放,一旦任何项目被拖放,我就会打开对话框。我已经用drop选项更新了我的问题,可以帮我看看吗?真的非常感谢…您使用ajax提交,这就是罪魁祸首:)。我想有一种方法可以触发验证,即使劫持“使用jquery提交”,但还没有找到它。在这种情况下,我更喜欢使用Ajax.BeginForm()助手使用标准提交。只需尝试在js.hi中的submit函数中执行Form.submit(),您能向我展示一下您的submit函数吗??我不明白。。真的非常感谢。。
$(name).dialog({
autoOpen: true,
width: options.witdth,
heigth: options.height,
resizable: true,
draggable: true,
title: options.title,
modal: true,
open: function (event, ui) {
// Enable validation for unobtrusive stuffs
$(this).load(options.url, function () {
var $jQval = $.validator;
$jQval.unobtrusive.parse($(this));
});
}
});