[英]reference an MVC entity model in a custom validation attribute
假設您有一個自定義驗證實體模型,則可以使用MVC4將模型傳遞給自定義驗證屬性,例如:
public class ValidatableModel
{
[CustomValidation(typeof(CustomDependentValidation), "ValidateCDV", **this**)]
public string Attrib1 { get; set; ]
public string Attrib2 { get; set; }
}
到一個CustomDependentValidation類,聲明為:
public class CustomDependentValidation : ValidationAttribute
{
public static ValidationResult ValidateCDV(ValidatedModel argValMod) //yes, ?-able.
{ if (argValMod.Attrib1 == argValMod.Attrib2) { return ValidationResult.Success; } }
}
在上面的代碼中,從此處的CustomValidation msdn頁面示例進行了一次額外的減少嘗試: http : //msdn.microsoft.com/zh-cn/library/system.componentmodel.dataannotations.customvalidationattribute( v=vs.95) .aspx
(在Silverlight版本中,我知道...其他版本頁面沒有任何示例代碼)
我嘗試編寫的自引用驗證模型模式之類的東西在MVC4中是不可能的嗎?
我猜可能是因為注釋不允許對象實例引用或實體模型對象在客戶端沒有任何業務,但是我仍在學習MVC並很容易失去業務方面的東西。
后來我在SO上找到了一些類似的問題解決方法:
簡短的答案似乎是不可能的。
答案大小是:這不在MVC4框中,但是似乎有足夠的工作時間是可能的
在您的定制Validation Attribute中,重寫IsValid方法,如下所示:
受保護的重寫ValidationResult IsValid(對象值,ValidationContext validateContext)
validationContext包含屬性ObjectInstance和ObjectType。 第一個是您的實體,第二個是您的實體類型。 這應該使您可以訪問驗證所需的實體中的任何其他屬性(我想-只是我自己找到的,所以如果沒有,我會通知您。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.