1
我們遇到了MVC2項目中的客戶端驗證問題。ASP.NET MVC客戶端驗證卡在無限循環中
有包含以下屬性
[Required(ErrorMessage = "First Name is required")]
public string FirstName { get; set; }
在相應的視圖視圖模型,我們有
<% using (Html.BeginForm("Save", "User", FormMethod.Post))
{
%>
<!-- code removed -->
<%= Html.ValidationMessageFor(model => model.UserInfo.FirstName)%>
<%= Html.TextBoxFor(model => model.UserInfo.FirstName)%>
<!-- code removed -->
<% } %>
當用戶點擊表單提交按鈕,0是空的問題就出現了。瀏覽器(本例中爲IE8)掛起,在無限循環中執行JavaScript。
如果我們刪除Required
屬性,那麼問題不會出現(但我們當然沒有看到驗證錯誤消息)。
的JavaScript的違規截面是MicrosoftAjax.debug.js
,在功能
var $addHandler = Sys.UI.DomEvent.addHandler = function Sys$UI$DomEvent$addHandler(element, eventName, handler) {
在下面的部分
。詳見行內評論
else if (element.attachEvent) {
browserHandler = function() {
var e = {}; // we end up back here...
try {e = Sys.UI.DomElement._getWindow(element).event} catch(ex) {}
return handler.call(element, new Sys.UI.DomEvent(e)); // ...when this line executes
}
element.attachEvent('on' + eventName, browserHandler);
}
什麼可能導致這種情況?