.Net异步调用局部视图

时间:2015-11-12 23:17:37

标签: c# asp.net-mvc

当我尝试渲染基本上在幻灯片中显示一些幻灯片的局部视图时,我遇到了一些错误。

幻灯片存储在db中,我从调试中知道我的控制器方法肯定会得到一组幻灯片对象。

但它仍然抛出这个错误,我不知道为什么。我得到的错误是:

{“执行处理程序'System.Web.Mvc.HttpHandlerUtil + ServerExecuteHttpHandlerAsyncWrapper'。}}的子请求时出错,内部异常为:

HttpServerUtility.Execute在等待异步操作完成时被阻止。

我假设它与同步有关,但我不确定是什么。

非常感谢任何帮助。

父视图(索引)

@{
    ViewBag.Title = "Title";
    Layout = "~/Views/Shared/_Layout.cshtml";

    ViewBag.IsIndex = true;
}

<!-- BEGIN .featured-slider -->
<div class="featured-slider">
    <!-- BEGIN .slider-background -->
    <div class="slider-background">
        <!-- BEGIN .row -->
        <div class="row">
            <!-- BEGIN .sixteen columns -->
            <div class="sixteen columns">
                @{
                    Html.RenderAction("Slideshow", new { controller = "home" });
                }
             <!-- END .sixteen columns -->
            </div>
        <!-- END .row -->
        </div>
    <!-- END .slider-background -->
    </div>
<!-- END .featured-slider -->
</div>

控制器方法:

    public async Task<PartialViewResult> Slideshow()
    {
        var slides = await _slides.GetPublishedSlidesAsync();

        return PartialView("_Slideshow", slides);
    }

_Slideshow局部视图:

 @model IEnumerable<Models.Slide>

<!-- BEGIN .slideshow -->
<div class="slideshow radius-full">
    <!-- BEGIN .flexslider -->
    <div class="flexslider radius-full" control-nav="true" data-speed="10000" data-transition="slide">
        <!-- BEGIN .slides -->
        <ul class="slides">
            @foreach (var slide in Model)
            {
                <li>
                    <!-- BEGIN .sixteen columns -->
                    <div class="sixteen columns">
                        if(false)
                        { 
                            <div class="feature-vid">

                            </div>
                        }
                        else if (true)
                        {
                            <a class="feature-img radius-full" href="" rel="bookmark" title="">
                                <img src="@slide.Image" />
                            </a>
                            if (false)
                            {
                                <!-- BEGIN .information -->
                                <div class="information radius-full">
                                    <div class="six columns">
                                        <h2 class="headline small">qqqq</h2>
                                    </div>
                                    <div class="ten columns">
                                        <div class="excerpt">aaaa</div>
                                    </div>
                                <!-- END .information -->
                                </div>
                            }
                        }
                    <!-- END .sixteen columns -->
                    </div>
                </li>
            }
        <!-- END .slides -->
        </ul>
    <!-- END .flexslider -->
    </div>
<!-- END .slideshow -->
</div>

1 个答案:

答案 0 :(得分:5)

不幸的是,ASP.NET MVC不支持ASP.NET 4.x上的异步部分视图。 ASP.NET 5.0中已经解决了这个限制(视图组件可以是异步的),但4.x分支不太可能支持这种限制。