2012-01-23 55 views
2

我正在使用MvcContrib網格在頁面上顯示錶格。我正在使用自定義列在表格上生成複選框,以便用戶可以選擇多行並提交表單。如何在沒有數據註釋的情況下創建所需的字段

我不希望表單提交,除非至少選擇了一個複選框。我可以自己輕鬆地編寫這個Javascript來強制進行驗證,但我想知道如何使用MVC3提供的不顯眼的庫。

我想我只需要設置我的輸入具有適當的類和屬性,然後在頁面上的腳本(驗證和validate.unobtrusive)應該選擇它們並將它們標記爲需要驗證,但我沒有能夠得到正確的組合。

這裏是我目前生成輸入:

<input type="checkbox" 
     name="foo" 
     value="@item.foo" 
     class="input-validation-error" 
     data-val-required="Please select an option." 
     data-val="true" /> 

回答

1

嘗試設置項目上的數據-VAL屬性,那麼你必須要告訴jQuery的你有新的內容重新解析通過什麼形式如:

 
$.validator.unobtrusive.parse($('#yourForm')); 

其中窗體當然是對您的窗體元素的引用。

也有這個偉大的發佈和jQuery有一些內部適配器,您可以撥打: 從http://www.devtrends.co.uk/blog/the-complete-guide-to-validation-in-asp.net-mvc-3-part-2

 
jQuery.validator.unobtrusive.adapters.addSingleVal("notequalto", "otherproperty", "mynotequaltofunction") 
+0

只是要清楚,我沒有添加新的內容到頁面。該頁面將在所有輸入中提供data-val和data-val-required屬性。我只是試圖讓客戶端驗證觸發並顯示一條錯誤消息。如果我將類設置爲「必需」,它會觸發,但我沒有收到我想要顯示的消息。 –

0
<div class="editor-field"> 
    <input class="text-box single-line" 
    data-val="true" data-val-number="The field Qty Available must be a number." 
    data-val-range="The field Qty Available must be between 0 and 120." 
    data-val-range-max="120" data-val-range-min="0" 
    data-val-required="The Qty Available field is required." 
    id="QtyOnHand" name="QtyOnHand" type="text" value="12" /> 
    <span class="field-validation-valid" data-valmsg-for="QtyOnHand" 
      data-valmsg-replace="true"></span> 
</div> 

領帶,在數據模型中的註釋和數據val-之間*在閱讀上述代碼後,屬性應該清晰,但是客戶端驗證綁定的位置可能不那麼明顯。打開\ Scripts \ jquery.validate.unobtrusive.js文件並搜索「data-val」。馬上你會看到JavaScript使用data-val-,input-和field- * CSS類在客戶端上顯示/隱藏驗證消息。

以上摘自這個偉大的article,您可能需要詳細閱讀。

1

從我的經驗來看,顯示客戶端驗證的常見錯誤是在頁面上放置一個Html.ValidationMessageFor(lambda)。

沒有這一點,客戶端驗證將不會觸發,以防止表單提交和/或顯示使用客戶端上的註釋生成的消息。

希望這會有所幫助。

相關問題