gpt4 book ai didi

c# - 调用 Actionfilter 时未呈现 _Layout 上的部分 View

转载 作者:行者123 更新时间:2023-12-03 20:53:44 25 4
gpt4 key购买 nike

Alert呈现的 View 包含布局

@model myModel

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

在使用这样的 Action 过滤器时
 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根本没有重新渲染。 (仅呈现 View )
为什么会这样?
我要不要换 ViewResult到别的东西,或
还包括 _Layout以某种方式在 Action 过滤器中?

更新 :检查呈现的页面后,我注意到页面包含所有信息,包括 _Layout,但 chrome 拒绝呈现它

更新 : Layout 包含其他局部 View
<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>

最佳答案

定义您的 PartialView,如下所示(不要为 partialview 定义布局页面):

<div>
< ... partial view content goes here >
</div>

将 Action 方法添加到 Controller 中,如下所示:
[HttpPost]
public PartialViewResult _DemoPartialView(/* additional parameters */)
{
return PartialView();
}

如果您想打开另一个 View ,例如当请求不是 POST 等时,请使用以下方法:
[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)]
public ActionResult _DemoPartialView()
{
if (HttpContext.Request.HttpMethod == "POST")
{
return PartialView();
}
else
{
return this.RedirectToAction("Index", "Home");
}
}

关于c# - 调用 Actionfilter 时未呈现 _Layout 上的部分 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61791015/

25 4 0
文章推荐: typeorm - 类型错误 : Cannot set property EntityManager of# which has only a getter