MVC Custom非模型对象验证?

时间:2013-04-02 15:45:39

标签: c# asp.net-mvc validation

我有一个特殊的场景,我需要验证一个不是我模型的对象并从中获取所有ValidationResult对象。

所以我的控制器里面有这样的东西......

public virtual ActionResult(MyObject postData)
{
    ICollection someCollection = DoSomething(postData);

    foreach(Thing t in someCollection)
    {
         // validate t and get any ValidationResult objects
         // put the validation results in the object property.
         // this call isn't real by the way
         t.ValidationResults = t.Validate();
    }
    ...
}

它不是我的模型我正在验证但是根据我给出的postdata我需要验证集合以及验证失败的地方我计划在集合中渲染失败的对象。

我想如何处理我想要的ValidationResult对象?

2 个答案:

答案 0 :(得分:1)

您可以将ValidationResults存储在ViewBag中,然后从那里进行渲染:

var list = new List<ValidationResult>();
foreach (Thing t in someCollection)
{
    t.ValidationResults = t.Validate();
    list.AddRange(t.ValidationResults);
}
ViewBag.ValidationResults = list;

现在,很多代码都做了很多假设,因为你没有提供很多信息。但无论哪种方式,将这些结果放入整体列表并将其设置在ViewBag中。然后,您可以利用视图中的ViewBag

@foreach (ValidationResult r in ViewBag.ValidationResults)
{
   <!-- render some HTML here  with the r variable -->
}

答案 1 :(得分:1)

manual validation with data annotations上的这篇文章可能会为您提供所需的信息。