2011-11-29 19 views
1

我有一個需要驗證總結的小表單,但是這個驗證總結應該被明確地放在另一個表單上。ASP.NET MVC 3.如何將一個表單的驗證摘要轉換爲另一個表單?

我知道,有一個限制 - 驗證總結只檢查當前表單中的元素,所以我搜索的是什麼類型的緊縮。

是否有任何解決方案不會涉及編寫自己的驗證和數百行Javascript?

+0

有這樣移動的ValidationSummary上提交事件的想法,但是當我的方法贊同這種情況下,出現的ValidationSummary之前頁面上調用方法 - 這會導致不同的,但不是簡單的問題。 –

回答

0

這是不可能解決這個問題與標準事件:在提交事件觸發「驗證」方法之前驗證摘要不存在頁面和callint「驗證」停止事件調度(如果你有任何錯誤的原因)。

我做了什麼涉及到「jquery.validate.unobtrusive.js」的edititng。步驟:

1)在 「jquery.validate.unobtrusive.js」 文件中 function onErrors我添加事件分派:

function onErrors(form, validator) { 
     // native code 
     jQuery("#submitErrorProxy").trigger(jQuery.Event("click")); // my event 
    } 

2)增加了隱藏輸入我的形式與id="submitErrorProxy"

3)添加的div容器在顯示驗證摘要的地方。

<div class="form-line" id="validationSummaryContainer"> 
    //validation summary should be moved here 
</div> 

4)接下來加入javascipt的方法

$("#submitErrorProxy").click(function (e) { 
       $("#validationSummaryContainer").empty(); 
       $(".validation-summary-errors").clone(true, true) 
       .appendTo("#validationSummaryContainer"); 
      }); 

clone(true, true) - 使所選元素的副本,其所有的子元素。並且使用appendTo而不是move,因爲原始有效摘要應該存在於原始表單上。

5)隱藏原始ValidtionSummary容器。

<div class="form-line" style="visibility: hidden; height: 0px"> 
    @Html.ValidationSummary(false) 
</div> 
0

您幾乎沒有提供有關這些表單以及它們如何關聯的信息,或者您爲什麼需要移動該驗證信息。 Plus可以讓事情變得簡單:驗證摘要不會檢查任何內容,只會顯示驗證錯誤的摘要。你說得對,摘要只是針對父表單提交的。如果你真的不想將摘要從一個表單移動到另一個表單,你可能想綁定到submit()事件,並使用jquery將.validation-summary-errors元素移動到另一個表單。

相關問題