gpt4 book ai didi

c# - 在 MVC 中,我如何使用 Controller 为已批准的用户呈现局部 View ?

转载 作者:太空狗 更新时间:2023-10-30 00:24:02 26 4
gpt4 key购买 nike

在 MVC 5 中,仅当(Windows 身份验证的)用户属于一个或多个 Active Directory 组列表时,我才尝试使用 Controller 呈现局部 View 。我需要考虑 30 多个不同的组,因此“hello world”示例不符合我的需要。在网络上玩寻宝游戏后,我设法收集了这么多。没有编译或运行时错误,但内容显示给所有用户而不是特定用户。所以还没有达到预期的结果。

虽然我可以在 View 中使用 if-then 逻辑实现预期的结果,但它会产生大量不必要的重复并鼓励面条化。所以我试图在 Controller 中执行此操作。

期望结果的总结:

当用户加载 View 页面时,仅当 Windows 身份验证用户属于 Controller 操作中定义的一组列表中的一个或多个组时,才应呈现局部 View 。如果用户未获得授权,则不包括部分 View 。

Controller block :

[ChildActionOnly]
[Authorize(Roles="Domain\\GroupA,Domain\\GroupB")]
public ActionResult MonitorCSU()
{
return PartialView("MonitorCSU");
}

查看 block :

<div class="rowWithCols3">
@Html.Partial("MonitorCSU")

不成功的迭代:

  • 在 Controller block 中,我尝试(未成功)使用 if-then block ,否则情况是另一个没有内容的部分 View 。

    [ChildActionOnly]
    公共(public) ActionResult MonitorCSU() { 如果 (User.IsInRole("Domain\GroupA")) { 返回 PartialView("_MonitorCSU"); } 别的 { 返回 PartialView("_Unauthorized"); }

  • 在 Razor 中,我尝试使用 HTML.Action,但当我尝试运行该页面时,浏览器陷入无限循环。

最佳答案

@Html.Partial() 返回分部 View 而不调用 Controller 方法。为了调用你的 Controller 方法,你需要使用

@Html.Action("MonitorCSU")

@{ Html.RenderAction("MonitorCSU") }

请注意,这假定 MonitorCSU() 方法与生成主视图的方法位于同一 Controller 中(否则您还需要包含 Controller 名称的参数)

Refer documentation

关于c# - 在 MVC 中,我如何使用 Controller 为已批准的用户呈现局部 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30743482/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com