我已經實現了擴展AssociatedMetaDataProvider的自定義元數據提供程序。該課程的最初目的是獲取一個屬性名稱並將其轉換爲Pascal封閉的單詞。驗證消息中的自定義元數據
我有一個新的要求,爲網站中所有必填字段的標籤添加可視指示符('*'字符)。我可以做這種變化,通過添加以下代碼到自定義元數據提供:
PropertyInfo property = containerType.GetProperty(propertyName);
if (property.GetCustomAttributes(typeof(RequiredAttribute), true).Any())
metadata.DisplayName = "* " + metadata.DisplayName;
此代碼「作品」,因爲它增加了「*」字符的所有標籤。但是,它的副作用還是在所有驗證消息中添加了'*'字符(例如Html.ValidationMessageFor(x => x.FirstName)
所使用的字符)。在這種情況下,我希望標籤爲'* First Name',並將錯誤消息是'需要名字'字段,而不是'*名字字段是必需的'
有沒有辦法提供添加'*'字符作爲標籤元數據的一部分而不影響在驗證消息中使用的屬性名稱?或者,在驗證消息正在構建時是否有辦法提供自定義元數據?
我仍然對這個答案有同樣的保留意見,就像我最初添加它時那樣。然而,我還沒有找到更好的解決方案,所以我將其標記爲接受的答案,除非/直到添加更好的解決方案。 – ajalexander