我也有類似的情況,這是我如何處理它:
服務器端
當POST事我遍歷所有字段的值,並根據驗證規則,我做了驗證在我的對象上。然後,您可以簡單地將ModelErrors添加到Field對象。
由於您將Template對象推送到View,因此您可以按名稱Fields[x].SomeProperty
訪問Fields。請確保您有一個ValidationMessageFor
爲SomeProperty
ModelState.AddModelError("Fields[x].SomeProperty", "The Error Message you want to show.);
客戶端
確保您的形式所具有的ID,這樣您可以訪問驗證方法()。 然後你遍歷所有的字段,只需添加驗證,只要你願意。
對於所有驗證規則,請檢查驗證Jquery文檔。
$('#frmYourForm').validate();
for (var i = 0; i < 'CountOfAllFields'; i++)
{
$('#Fields_' + i + '__Foo').rules('add', { required: true, messages: { required: 'The Foo field is required'} });
$('#Fields_' + i + '__Bar').rules('add', { required: true, messages: { required: 'The Bar field is required'} });
}
我希望我幫你上路!
PS,使用Firebug幫助您找到屬性的正確名稱,這就是你怎麼可以在的ModelState等
感謝ModelErrors鏈接它們,這將幫助。那麼在服務器端,你自己正在做所有的檢查? –
是的,在字段上我有一個DynamicValidation對象列表(自寫類)。這個類有一個ErrorMessage,Enums.ValidationType屬性。併爲MaxLength等東西的ExtraProperty。Enums.ValidationType有要求,數字等。這樣我可以添加一個驗證列表到我的領域。然後我寫了一個方法來檢查字段對他的驗證,如果需要添加ErrorMessage到模型狀態。 –
關於服務器端方法:您說過,「您已經對所有字段值進行了引用,並根據我對對象所做的驗證規則進行了驗證。」#: Q:'ModelState'僅在Controller中的範圍內或查看,對不對?所以,我明白實際驗證(又名if-checks)發生在'Field'對象中,但是您必須在控制器中調用'ModelState.AddModelError()'。這是正確的嗎? 我想了解您是否能夠在您的業務代碼與您的表示層代碼(ASP.NET MVC)中進行所有驗證。謝謝。 –