当我尝试渲染基本上在幻灯片中显示一些幻灯片的局部视图时,我遇到了一些错误。
幻灯片存储在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>
答案 0 :(得分:5)
不幸的是,ASP.NET MVC不支持ASP.NET 4.x上的异步部分视图。 ASP.NET 5.0中已经解决了这个限制(视图组件可以是异步的),但4.x分支不太可能支持这种限制。