2015-05-15 66 views
0

我想改變我的表單字段的data-val-required屬性,以便我得到一個通用的「required」出現。現在我知道,我可以用下面這樣做:更改mvc表單驗證錯誤消息

@Html.TextBoxFor(model => model.Name, new { data_val_required ="required" }) 

但我不希望「硬編碼」成這樣的模板,我寧願使用所需的屬性就可以設置模型然後通過JS使用這樣的重寫它:

$('input, select, textarea').each(function() { 
    var element = $(this); 
    if (element.data('val-required')) { 
     element.data('val-required', 'required'); 
    } 
}); 

我的文件準備好運行這個並檢查了數據屬性已經改變(他們有),但顯然這是發生太晚驗證拿注意它。所以我需要知道什麼時候MVC綁定它的表單驗證,所以我可以在之前運行或如何僅更改客戶端的錯誤消息。

我已經瀏覽了頁面的源代碼,只是看不到驗證的實例化。

對於那些說改變所需的屬性或做服務器端,我不想這樣做,因爲如果我有js禁用我顯示驗證摘要在表單的頂部,如果他們都是無用的只是說需要。這就是爲什麼我想這樣做,客戶端僅

enter image description here

+0

可能重複[MVC:覆蓋默認ValidationMessage]( http://stackoverflow.com/questions/1808097/mvc-override-default-validationmessage) –

+0

和更多選項[這裏](http://stackoverflow.com/questions/6214066/how-to-change-default-validation-錯誤信息在asp-net-mvc) –

+0

只需設置[[Re quires]'在'Name'屬性上,然後確保你有包含jquery不顯眼的驗證引用。 – mattytommo

回答

1

對於那些你感興趣的解決方案,下面將重置驗證消息:

(function() { 
    $('input, select, textarea').each(function() { 
     var element = $(this); 
     if (element.data('val-required')) { 
      element.attr('data-val-required', 'Required'); // please note this has to be the attr not data 
     } 
    }); 

    form = $('form'); 
    form.removeData("validator").removeData("unobtrusiveValidation"); 
    $.validator.unobtrusive.parse(form); 
}); 
1

真的不要」不想在JavaScript和操縱屬性中做到這一點,這在Razor中是完全可以實現的。

只要有你ValidationSummary不排除個別樓盤的錯誤:

@Html.ValidationSummary(false) 

,然後刪除所有ValidationMessageFor獻給所有領域。

+0

嗨mattymoo,也許這個圖形將更好地解釋它,爲什麼我只想要更改js版本:http://i.imgur.com/fUscyYy.jpg從js版本可以看到,如果它們具有全長錯誤消息,它會使窗體看起來相當混亂,因爲紅色框會與其他文本框重疊,因爲如果js被禁用時(即它只是說需要),您沒有完整的錯誤消息,那麼錯誤摘要將不會發生,非常有用。這就是我只想在js中更改錯誤消息的原因 – Pete