我有一个有点古怪的问题的一个额外的项目,我挣扎追查根源...ASP.net MVC - IE9与表单中收集的空键
我有一个ASP.net MVC网站,最近我的一位同事开始使用IE9,并注意到其中一个页面出现问题 - 点击保存时没有更新。
我想,这可能会是一个脚本问题,因为有这个页面上的jQuery的公平位使用,并且它可能仍然是,但是:
如果我在Chrome提交此页面(或IE8/7/6),然后我得到一个包含11个项目的表单集合,就像我期望的那样。如果我在IE9中提交相同的页面,我会在集合的末尾获得一个额外的项目,其中有一个空字符串作为键和一个空字符串作为值。这会导致对UpdateModel()的调用不起作用(但不会引发异常) - 这些值都不会在我的对象中更新,并且ModelState仍然显示为有效。
到目前为止,我只找到了这一页,但我很好奇,如果有人可能知道是什么造成这种情况?
更新04/04/2011 - 缩小的罪魁祸首:
我删除的码位,直到这个工作,并把范围缩小到在我的验证一些代码。我使用jQuery的验证插件,并已作为提交处理(在名称进行了一些新版本......)以下:
submitHandler: function (form) {
var submitForm = true;
var newValue, originalValue;
newValue= $("#newValue").val();
originalValue= $("#originalValue").val();
if (newValue!= originalValue) {
//affectedValues is an array populated at the top of the page.
if ($.inArray(originalValue, affectedValues) != -1 &&
$.inArray(newValue, affectedValues) == -1) {
submitForm = confirm("Are you sure you want to do this");
}
}
if (submitForm) {
form.submit();
}
},
从代码(我可以做谢天谢地删除此,因为它是一个位遗留代码)似乎使这项工作,我的表单集合中的空项目消失了。如果有人知道为什么会发生这种情况,那会很好。
是否有机会将问题缩小为可以在此发布的简单表单?当我升级到IE9时,我没有注意到我的应用程序有任何问题。 – 2011-04-04 11:29:51
我正在试图缩小它的过程 - 它似乎与脚本有关,因为当我注释掉页面上的所有脚本时,它就消失了......我使用jquery 1.5.2和jquery ui 1.8 .10(只是升级了IE9兼容性的jQuery lib ...)。 – Paddy 2011-04-04 11:50:15