1

我有一个特殊的场景,我需要验证一个不是我的模型的对象并从中获取所有 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 对象吗?

4

2 回答 2

1

您可以将它们存储在ValidationResultsViewBag,然后从那里渲染它们:

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 -->
}
于 2013-04-02T16:04:03.800 回答
1

这篇关于使用数据注释进行手动验证的文章可能会为您提供所需的内容。

于 2013-04-03T08:39:51.847 回答