2012-01-23 57 views
1

我有一個用ASP.NET MVC3/Razor編寫的表單。表單發佈在Firefox和Chrome中運行良好,但由於某些原因,在Internet Explorer中,「提交」按鈕無響應。MVC3/Razor中的表單提交按鈕在Internet Explorer中不起作用

要清楚,如果任何客戶端字段驗證失敗,驗證消息將按預期顯示。但該視圖的模型實現IValidatableObject並重寫Validate(),並且如果數據應該導致違反驗證規則,則不會顯示錯誤消息。這導致我相信沒有回傳正在發生。

任何想法爲什麼IE會這樣做?

編輯:代碼段(看起來軋機的漂亮運行,不是嗎?):

@model MyModel 
... 
@using (Html.BeginForm("SaveMyForm", "Home")) { 
<fieldset> 
    ... 
    <input type="submit" value="Save" class="submit" /> 
</fieldset> 
} 
+0

腳本你是如何張貼到您的網頁?形式職位?或AJAX?另外,你可以使用FireBug或Fiddler驗證你的數據是否通過網線(更多細節) – hanzolo

+0

你可以在'validate'中設置一個斷點來查看它是否被擊中或者沒有... – gdoron

+0

什麼版本的IE? –

回答

2

跟蹤它被註釋掉部分的頁面代碼,看看哪些收到的被註釋掉表單將起作用。

答案是類型爲char的隱藏字段,該字段尚未初始化,並且其初始值仍爲(char)0。源生成的HTML是:

<input data-val="true" data-val-required="The MyChar field is required." id="MyChar" name="MyChar" type="hidden" value="" /> 

我與鉻相比,有HTML源代碼是一樣的,除了:

value="�" 

這顯然與「字符零」值。顯然,IE在獲取char 0時彈出,並將其截斷爲空,然後客戶端驗證規則要求MyChar有一個值會導致回發失敗,並且由於它是隱藏字段,因此無法顯示錯誤消息無論如何!

(插句注:我還沒有裝修這個領域與[Required]屬性的任何地方,所以我不知道爲什麼HTML是生成一個「必需的」驗證 - 尤其是看到它是一個隱藏字段!)

+1

默認情況下,每個非空屬性都會被「required」需要,這就是data-val =「true」'渲染的原因。 – gdoron

0

如果你在@Html.HiddenFor中使用的模型中有一個自定義字段,但未在類中定義它,它將呈現頁面,但提交/發佈將不起作用。

@Html.HiddenFor(model => model.appUser.UserType) 

檢查所有模型屬性,並確保它們是定義的模型類。

-1

請確保您有包括底部

@section Scripts { 
    @Scripts.Render("~/bundles/jqueryval") 
} 
相關問題