- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试这样做:
<body>
<div id="Page">
<div id="TopBar">
<div id="TopBarLogo">
<img src="@Url.Content("~/Content/images/Weblogo.png")" />
</div>
<div>
@{ Html.RenderAction("MenuPartial", "MenuPartial"); }
</div>
</div>
<div class="Content">
@if (SessionWrapper.IsAuthenticated)
{
@RenderBody()
}
else
{
Html.RenderPartial("AccessDeniedPartial");
}
</div>
</div>
</body>
</html>
但这当然是不允许的,因为我需要 @RenderBody() 否则会发生异常。问题是这个解决方案太简洁了,我仍然想呈现页面的顶部,但我想覆盖内容,除非用户已登录。
我能想到的唯一其他解决方案是在 Controller 中进行检查并返回另一个 View 。这样做的问题是我必须在每个 Controller 中重复这段代码,这让我很难过。
有什么方法可以全局覆盖类似于上面的内容,而不会将用户重定向到另一个 url?如果有的话,请你给我一个正确的方向。我似乎有点拘泥于目前的心态。
我没有使用默认的 Microsoft 安全类 (FormsAuthentication),在这种情况下我也无法使用。
谢谢。
最佳答案
在 Views/Shared 文件夹中创建一个 AccessDenied
View ,其内容与您的 AccessDeniedPartial
相同。保留 RenderBody
原样:
<div class="Content">
@RenderBody()
</div>
创建一个 LogOnAuthorizeAttribute
来检查身份验证,否则显示 AccessDenied View 。
public class LogOnAuthorizeAttribute : AuthorizeAttribute
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
if (!SessionWrapper.IsAuthenticated)
{
filterContext.Result = new ViewResult {ViewName = "AccessDenied"};
}
else
{
base.OnAuthorization(filterContext);
}
}
}
如果您希望将 LogOnAuthorizeAttribute
添加到每个 Controller ,请将其作为过滤器添加到 Global.asax
中的 GlobalFilterCollection
。
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new LogOnAuthorizeAttribute());
}
关于c# - 在不重定向 MVC3 中的用户的情况下覆盖 RenderBody 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9410425/
来自使用 ajax 的 webform 背景,我正在尝试使用 mvc 创建类似的内容。 我已经弄清楚了 Controller 、 View 和模型的作用。 我现在想做的是,当我的用户单击按钮时,会调用
我不确定我是否正确地处理了这个问题。 我有一个 ASP.NET MVC Web 应用程序。有 4 个主要“页面”通过单击菜单选项,可以选择一个页面,并将该页面选项存储在本地存储中。 现在,如果我刷新页
我试图在我的 _Layout.cshtml 中使用媒体查询来确定显示哪个导航栏。 在较大的设备上,我想使用 Bootstrap (col-2) 显示垂直导航栏,并且我想使用 RenderBody()
我有一个带有 JQuery UI Tabs 的 ASP.NET MVC 3 应用程序。我有一个主布局页面_layout.cshtml,代码如下。主 _layout.cshtml 需要 @RenderB
您好,我正在开发一个带有 boostrap 模板的网站。我想要的是,当用户单击链接时,它会调用 Controller 函数返回 View 并将焦点转移到正文部分。 为此,我使用 _Layout 和渲染
是否有这样的方法可以在 javascript 或 javascript 库中模拟 @RenderBody() ?我正在尝试启动一个新的 html/javascript 项目(无服务器端语言),并希望能
我正在使用 ASP.NET Core 2.2。我遇到的问题是我不知道在哪里使用@RenderBody() 在我的 _Layout 页面中。这是我想做的事情的代表: 绿色部分应该来自_Layout,白色
我有一个 ASP.NET MVC web 应用程序,其中的所有页面都使用一个主 Layout.cshtml 页面。虽然我通常想要 RenderBody(),但我有一个可以在我的数据库中启用的站点关闭机
我将 Canvas 加载到 _Layout.cshtml 上 当我从索引页面浏览到关于或联系方式时,正在显示,但页面内容丢失。 Index页面将加载 div在 下标记但是About页面缺少内容。 我
在 _Layout.cshtml 中是否可以确定将在 @RenderBody() 中呈现的 View ? 最佳答案 您可以通过 ((RazorView)ViewContext.View).ViewPa
在MVC/Razor语法中,我试图理解为什么我们需要@RenderBody。 例如(代码取自 example ) My WebSite
我有三个简单的布局, _Layout.cshtml (这是基本布局) @RenderSection("something", required: false) @RenderBody() _Main.
我正在使用 MVC 5。 我需要在加载每个页面之前调用一个函数。我是在 _Layout.cshtml View 中完成的: $(function () { $('body').on(
我正在用 MVC 构建一个在线商店,现在正在设计它,我下载了 2 个 bootstraps 模板,并尝试了每个模板,我将下载文件中索引中的代码复制到我的 _layout.cshtml ,在运行元素后我
我正在尝试这样做: @{
我使用属性来路由。这是否相关,我不知道。 当我不使用“路由”属性时,共享 Controller 中的 _Layaout() 操作不起作用但页面正在呈现。 public class SharedCont
默认情况下,MVC3 应用中_Layout.cshtml 中的@RenderBody 指向~/Views/Home/Index。 @RenderBody() 这个设置在哪里,我如何将它更改为指向
Code available here 在 ASP.NET Core 3.0 Web 应用程序中,我添加了以下简单的标记帮助器: [HtmlTargetElement("submit-button")
我有一个母版页,它使用 @RenderBody 来显示当前的 Controller \ Action 内容。我遇到了一种情况,我想根据使用@RenderBody 呈现的 Controller 来显示部
所以这是我的问题:我的 MVC 3 项目中有我的布局,其中包含所有 js 脚本: function mycarousel_initCallback(carousel) {
我是一名优秀的程序员,十分优秀!