2013-04-02 14 views
1

我有一個奇怪的場景,我需要驗證一個不是我的模型的對象,並從中獲取所有的ValidationResult對象。MVC自定義非模型對象驗證?

所以我的控制器有這樣的事情在裏面......

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對象?

回答

1

你可以存儲在ViewBagValidationResults,然後從那裏使其:

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 --> 
} 
+0

我不認爲我的問題措辭正確...該驗證方法不存在(但)但是,有問題的對象有數據註釋它的屬性,我想獲得驗證結果:http:///msdn.microsoft.com/en-GB/library/system.componentmodel.dataannotations.ivalidatableobject.validate.aspx ...我的問題是我如何實現這一點。 – War

+0

努力工作+1 ...解決方案很有效,這是我必須弄清楚的驗證方法代碼。 – War

+0

@Wardy,非常感謝,照顧好朋友! –