Jquery Validate和Asp.net MVC之间的冲突

时间:2010-05-28 20:43:40

标签: jquery asp.net-mvc jquery-validate

我正在使用asp.net mvc 2.0和jquery验证1.7(http://bassistance.de/jquery-plugins/jquery-plugin-validation/

这是怎么回事。用户可以单击链接来编辑产品。当用户点击他们想要编辑的产品时,会出现一个带有文本框和下拉列表形式的jquery对话框。

这些html控件中包含填写的信息。假如用户选择编辑Ipad产品,则会出现一个对话框,其中一个表单文本框中将包含“Ipad”。

现在,此表单在服务器端呈现(表单处于部分视图中)。加载对话框时,会发出ajax请求以获取该部分视图,并在ajax调用的响应部分中执行类似

的操作
$('#EditDialog).html(ajaxresponse).dialog({...});

所以我会在对话框中呈现这样的东西

<form id="EditProduct">
Product Name: <input type="text"  value="IPad" name="ProductName" />
</form> 

现在我的jquery验证将是这样的。

 $("#EditProduct").validate(
           {
               errorContainer: "#Errorbox",
               errorLabelContainer: "#Errorbox ul",
               wrapper: "li",
               rules:
               {
                   ProductName: "required"
               }
           });

所以我知道这是有效的,因为我对添加产品使用相同的验证,如果您尝试将ProductName留空,则会显示验证错误。

现在它不适用于编辑,但我想我知道原因,但不知道如何修复它。

文本框的值是“IPad”,这是Html.TextBoxFor()呈现它的方式。但是,如果用户将产品名称更改为“Iphone”或空白,则该值永远不会更改。它总是在html中的“Ipad”。

所以我认为当验证发生时,看起来它已经存在了哦。即使实际上它可能是空白的,它也是有效的。

当我通过ajax发布到服务器时,它获得正确的值,服务器端验证会停止它,但由于此问题,我的整个客户端验证都变得无用,因为它永远不会更改html。

1 个答案:

答案 0 :(得分:1)

这似乎不太正确!

想象一下,在“添加”的情况下,您呈现的HTML看起来像这样:

<form id="AddProduct">
Product Name: <input type="text"  value="" name="ProductName" />
</form>

所以“HTML”有一个空白值,但是一旦ProductName被填充,验证插件就可以正确判断了吗?

我不确定问题是什么,但是如果你有一个调试器(即Firebug),请尝试在“检查”功能(1.6中的〜第475行)中的验证插件中中断。您应该能够查看element.value,看看它是否找到了正确的用户编辑值。