简体   繁体   中英

call async action from another controllers' synchronous action

Imagine we have asynchronous action defined in controller:

public class PortalController : AsyncController {
public void NewsAsync(string city) {

    AsyncManager.OutstandingOperations.Increment();
    NewsService newsService = new NewsService();
    newsService.GetHeadlinesCompleted += (sender, e) =>
    {
        AsyncManager.Parameters["headlines"] = e.Value;
        AsyncManager.OutstandingOperations.Decrement();
    };
    newsService.GetHeadlinesAsync(city);
}

public ActionResult NewsCompleted(string[] headlines) {
    return View("News", new ViewStringModel
    {
        NewsHeadlines = headlines
    });
}

When I call it from browser - everything works. But I want to call this action (News) from another synchronous controller. Is there any way to call action and get the result?

public class PortalController: Controller {
    public ActionResult News(string city) {
        NewsService newsService = new NewsService();
        ViewStringModel headlines = newsService.GetHeadlines(city);
        return View(headlines);
    }
} 

you should have looked at the rest of the code you got From MSDN you can't have a view without an ActionResult of some sort to get the data.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM