這些行可以用Orchard自己的實現替換DataAnnotationsModelValidatorProvider
(DAMVP
),它允許將驗證消息本地化爲Orchard方式。它的做法是通過替換例如[Required]
與[LocalizedRequired]
,然後將控制權交給DAMVP
。請注意0確實可以完成它的工作 - 但只有在果園已經與屬性「搞砸」之後。
問題是DAMVP
使用Attribute
的類型來應用客戶端驗證屬性。現在它不會找到例如RequiredAttribute
,因爲它已被替換爲LocalizedRequiredAttribute
。因此它不會知道它應該添加的客戶端驗證屬性(如果有的話)。
因此,對線條進行評論會讓你失去烏節的本地化。留下它們會使你失去客戶端驗證。
一個解決辦法是威力工作(還沒有看夠通過果園的代碼,並沒有在目前測試手段)將是使DAMVP
瞭解果園的Localized
屬性,並與他們做什麼。
DAMVP
有一個靜態的RegisterAdapter()方法用於爲屬性添加新的客戶端規則。它採用屬性的類型和客戶端適配器(負責添加客戶端屬性的類)使用的類型。
所以,像下面這樣可能工作:
在OrchardStarter.cs:
// Leave the LocalizedModelValidatorProvider lines uncommented/intact
// These are the four attributes Orchard replaces. Register the standard
// client adapters for them:
DataAnnotationsModelValidatorProvider.RegisterAdapter(
typeof(LocalizedRegularExpressionAttribute),
typeof(RegularExpressionAttributeAdapter)
);
DataAnnotationsModelValidatorProvider.RegisterAdapter(
typeof(LocalizedRequiredAttribute),
typeof(RequiredAttributeAdapter)
);
DataAnnotationsModelValidatorProvider.RegisterAdapter(
typeof(LocalizedRangeAttribute),
typeof(RangeAttributeAdapter)
);
DataAnnotationsModelValidatorProvider.RegisterAdapter(
typeof(LocalizedStringLengthAttribute),
typeof(StringLengthAttributeAdapter)
);
至於官方的字,似乎因爲本地化的驗證是在1.3中引入這個沒有工作,並且影響被認爲是低的:http://orchard.codeplex.com/workitem/18269
因此,目前看來問題標題的官方答案是「它不應該」。
謝謝,你已經採取了我已經知道/假定的情況,並將它與我沒有的東西一起編織在一起,並給我我需要的答案。非常感激。 – Zannjaminderson