【发布时间】:2020-05-14 06:49:43
【问题描述】:
呈现的Alert 视图包含布局
@model myModel
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
当使用像这样的动作过滤器时
public class CheckThisAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
filterContext.Result = new ViewResult
{
ViewName = "Alert",
ViewData = new ViewDataDictionary(new EmptyModelMetadataProvider(), new ModelBinding.ModelStateDictionary())
{
Model = new myModel()
}
};
base.OnActionExecuting(filterContext);
}
}
我应该将_Layout 根本不会重新渲染。 (仅渲染视图)
为什么会这样?ViewResult 更改为其他内容,还是
在动作过滤器中也包含_Layout?
更新:检查渲染页面后,我注意到页面包含所有信息,包括_Layout,但chrome拒绝渲染它
更新:布局包含其他部分视图
<div class="page-wrapper">
<div class="page-inner">
<partial name="_LeftPanel" />
<div class="page-content-wrapper">
<partial name="_PageHeader" />
<main id="js-page-content" role="main" class="page-content">
@RenderBody()
</main>
<partial name="_PageContentOverlay" />
<partial name="_PageFooter" />
</div>
</div>
</div>
似乎根本没有加载,这就是为什么输出只有
<div class="page-wrapper">
<div class="page-inner">
<div class="page-content-wrapper">
<main id="js-page-content" role="main" class="page-content">
<div class="alert alert-warning" role="alert">
<strong>Alert!</strong> This is what only is displayed
</div>
</main>
<div class="page-content-overlay" data-action="toggle" data-class="mobile-nav-on"></div>
</div>
</div>
</div>
【问题讨论】:
-
我测试了您的代码,但它运行良好并呈现了所有 .您是否尝试创建一个新的简单项目来测试操作过滤器?如果您希望社区审查和调试代码,您能否分享有关视图和应用过滤器方式的更多详细信息?
-
@XueliChen 你能检查一下更新吗?
-
@Giulio 它呈现 _Layout 但不呈现其中包含的部分视图。刚刚更新了,谢谢
标签: c# asp.net-mvc asp.net-core