我正在編寫一個自定義MVC驗證屬性,該屬性依賴於模型中的另一個命名屬性。實施IClientValidatable
我的代碼看起來是這樣的:獲取MVC客戶端驗證對象列表的完整屬性名稱
public IEnumerable<ModelClientValidationRule> GetClientValidationRules
(ModelMetadata metadata, ControllerContext context)
{
var name = metadata.DisplayName ?? metadata.PropertyName;
ModelClientValidationRule rule = new ModelClientValidationRule()
{ ErrorMessage = FormatErrorMessage(name), ValidationType = "mycustomvalidation" };
rule.ValidationParameters.Add("dependentproperty", dependentProperty);
yield return rule;
}
麻煩的是,我想在元素的列表來使用它。從屬屬性渲染視圖與MyListOfObjects[0].DependentProperty
名稱和驗證規則被渲染爲data-val-mycustomvalidation-dependentproperty="DependentProperty"
如何從GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
中訪問相關屬性的全名,它呈現爲data-val-mycustomvalidation-dependentproperty="MyListOfObjects[0].DependentProperty"
的模型是這樣的:
public class MyClass
{
public string SomeValue { get; set; }
public List<Item> MyListOfObjects { get; set; }
public class Item
{
[MyCustomValidation("DependentProperty")]
public int MyValidatedElement { get; set; }
public int DependentProperty { get; set; }
}
}
你能告訴模型(S)和財產您@StephenMuecke將其應用到 –
編輯的顯示爲例 –
你不(和S不應該)在屬性中需要_「全名」_。假設你使用'protected override ValidationResult IsValid(object value,ValidationContext validationContext)',那麼'validationContext'就是'Item'模型。我假設你想要的是在你的客戶端腳本中獲得相應的'DependentProperty'? –