如何在没有数据库命中的表单中正确验证集合中的自定义对象?

时间:2014-07-22 16:15:42

标签: c# asp.net-mvc

我有一个问题/答案表单提交,其中需要动态生成问题和答案。数据库中的位字段指示表单上是否需要此字段。以下是代码的视图模型:

[ResponseValidator]
public class UserResponse
{
    public int ResponseId { get; set; }
    public string Question { get; set; }
    public string Answer { get; set; }
    public bool Required { get; set; }

    private class ResponseValidator : ValidationAttribute
    {
        protected override ValidationResult IsValid(object value, ValidationContext context)
        {
            var response = value as UserResponse;
            return !(response.Required && String.IsNullOrEmpty(response.Question))
                ? null
                : new ValidationResult(FormatErrorMessage(String.Format(
                    "{0} is required.", 
                    response.Question)));
        } 
    }
}

问题是如果不使用隐藏元素,则不会保留Required属性的状态。但是,我不希望客户端能够修改此隐藏字段并提交无效的问题答案。如果不对UserResponse进行数据库查找,这是可能的,还是最优雅的解决方案?

0 个答案:

没有答案