我想使用異步控制器,我無法弄清楚如何驗證用戶輸入。
以下是我的控制器中定義的兩種異步方法。我應該在SearchAsync方法或SearchCompleted方法中檢查ModelState.IsValid。如果SearchAsync那麼它的返回類型是void將返回視圖結果。如果SearchCompleted,那麼該方法將如何知道searchForm參數。如何驗證異步控制器中的模型狀態
[HttpPost]
[ValidateAntiForgeryToken]
public void SearchAsync(BusinessSearchForm searchForm)
{
AsyncManager.OutstandingOperations.Increment();
new Thread(() =>
{
var suggestions = _searchSvc.GetSuggestions(searchForm.BusinessName, searchForm.StreetAddress, searchForm.City, searchForm.PostalCode);
AsyncManager.Parameters["suggestions"] = suggestions;
AsyncManager.OutstandingOperations.Decrement();
}).Start();
}
public ActionResult SearchCompleted(IEnumerable<BusinessSuggestionBase> suggestions)
{
return View(suggestions);
}
我想出了我之前發佈的計算器,雖然不會讓我24小時內進入它的答案之間的ModelState。你的回答非常接近我所能提供的信息。你提到不增加未完成的操作。這有什麼區別嗎? – 2011-04-14 03:03:10
Completed方法不會執行,直到未完成的操作完成,aka = 0。因此,如果您永遠不會增加,您將永遠不需要遞減,因此未完成的操作保持爲0.這允許執行Completed方法。沒關係,只要沒有突出的操作。 – 2011-04-14 05:08:26
謝謝xixonia。考慮到此更新了我的答案 – 2011-04-14 12:41:13