gpt4 book ai didi

asp.net - 如何在异步 Controller 中验证模型状态

转载 作者:行者123 更新时间:2023-12-04 06:29:13 26 4
gpt4 key购买 nike

我正在尝试使用异步 Controller ,但无法弄清楚如何验证用户输入。

以下是我的 Controller 中定义的两个异步方法。我应该在 SearchAsync 方法或 SearchCompleted 方法中检查 ModelState.IsValid 吗?如果 SearchAsync 那么如何返回 View 结果,因为它的返回类型是 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);
}

最佳答案

以下似乎对我有用。我最终在这两种方法中都检查了模型状态。将初始模型作为参数添加到已完成的方法中。 Asp.net Mvc 似乎在两种方法之间保持模型状态

    [HttpPost]
[ValidateAntiForgeryToken]
public void SearchAsync(BusinessSearchForm searchForm)
{
if (ModelState.IsValid)
{
AsyncManager.OutstandingOperations.Increment();
new Thread(() =>
{
if (ModelState.IsValid)
{
var suggestions = _searchBusinessSvc.GetSuggestions(searchForm.BusinessName, searchForm.StreetAddress, searchForm.City, searchForm.PostalCode);
AsyncManager.Parameters["suggestions"] = suggestions;
}
AsyncManager.Parameters["searchForm"] = searchForm;
AsyncManager.OutstandingOperations.Decrement();
}).Start();
}
}

public ActionResult SearchCompleted(BusinessSearchForm searchForm,IEnumerable<BusinessSuggestionBase> suggestions)
{
if (ModelState.IsValid)
{
TempData["suggestions"] = suggestions;
return RedirectToAction("SearchResult");
}
return View(searchForm);
}

关于asp.net - 如何在异步 Controller 中验证模型状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5643319/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com