【发布时间】:2010-05-28 20:43:40
【问题描述】:
我正在使用 asp.net mvc 2.0 和 jquery validate 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。
【问题讨论】:
标签: jquery asp.net-mvc jquery-validate