我一直在为DevForce中的实体开发validatin,我已经设法获得了除验证导航属性之外的所有工作。
我尝试在属性上放置一个RequiredValueVerifier属性,并确实在UI上显示验证错误,但是一旦我使用Manager.VerifierEngine.Execute({entitytovalidate}),结果就会显示为Ok。
我知道DevForce创建了nullos并且我们可以修改属性在所述nullos中的含义但是我希望VeirifierEngine在我们没有更新nullo中的值时返回Not Ok的方式。
我目前的解决方法是在用于FKey的Id上有一个辅助Int32RangeVerifier,但我不满意这是一种解决方法。
尝试这样做而无需为这些属性创建Verifier Providers。
如果有人对此有解决方案,我将非常感谢您分享。
以下是当前解决方案的示例:
namespace BearPaw.Models.Main
{
[MetadataType(typeof(TechnicianNoteMetadata))]
public partial class TechnicianNote {
public static TechnicianNote Create(int byUserId, DateTimeZone clientZone, DateTime userUtc)
{
var newItem = new TechnicianNote()
{
CreatedById = byUserId,
CreatedDate = userUtc,
CreatedDateTz = clientZone.Id,
ModifiedById = byUserId,
ModifiedDate = userUtc,
ModifiedDateTz = clientZone.Id
};
return newItem;
}
}
public class TechnicianNoteMetadata
{
[Int32RangeVerifier(ErrorMessage = "Note Category is required", MinValue = 1)]
public static int NoteCategoryId;
[RequiredValueVerifier(DisplayName = "Note Category")]
public static NoteCategory NoteCategory;
[RequiredValueVerifier(DisplayName = "Note Detail")]
public static string NoteDetail;
}
}
非常感谢提前
答案 0 :(得分:0)
您可以创建自定义验证程序来处理导航属性验证,如果您不想使用VerifierEngine
,则可以使用AddVerifier
方法将其直接添加到IVerifierProvider
。< / p>
例如:
public class NullEntityVerifier : PropertyValueVerifier
{
public NullEntityVerifier(
Type entityType,
string propertyName,
string displayName = null)
: base(new PropertyValueVerifierArgs(entityType, propertyName, true, displayName)) { }
public NullEntityVerifier(PropertyValueVerifierArgs verifierArgs)
: base(verifierArgs) { }
protected override VerifierResult VerifyValue(object itemToVerify, object valueToVerify, TriggerContext triggerContext, VerifierContext verifierContext)
{
var entity = valueToVerify as Entity;
var msg = $"{this.ApplicableType.Name}.{this.DisplayName} is required.";
return new VerifierResult(entity != null && !entity.EntityAspect.IsNullEntity, msg);
}
}
要添加到引擎:
var verifier = new NullEntityVerifier(typeof(TechnicianNote), "NoteCategory");
_em1.VerifierEngine.AddVerifier(verifier);
如果您想坚持使用属性验证程序,则可以为验证程序创建自定义属性。有关详细信息,请参阅DevForce Resource Center。