sách gpt4 ăn đã đi

c# - 判断 Controller 是否在一个区域中

In lại Tác giả: Walker 123 更新时间:2023-11-30 12:22:12 29 4
mua khóa gpt4 giày nike

有没有办法检查调用方法的Controller是否来自Area内的Controller?

例如,我有一个继承自 AuthorizeAttribute 的类,例如

public class CustomAuthorize: System.Web.Mvc.AuthorizeAttribute
{
public CustomAuthorize()
{
...
}

protected override bool AuthorizeCore(HttpContextBase httpContext)
{
// TODO - Check if the controller is from an Area
}
}

然后我有一些 Controller Action ,这些 Action 装饰有相关角色(以及一些其他自定义属性),例如

[CustomAuthorize(Roles ="Administrator")]
[HttpGet]
public virtual ActionResult Index()
{
...
}

在上面的 TODO 部分,我想看看 Controller 是否是我的某个区域中的 Controller 之一。我知道我在某个区域中的 Controller 将位于 ProjectName.Areas.xxx.Controllers 命名空间中(其中 xxx 是区域名称),而那些不在其中的 Controller 将位于 ProjectName.Controllers 命名空间中。

是否有某种方法(也许使用反射?)可以从上面的 AuthorizeCore 函数中计算出特定区域(或它来自的命名空间),以便我可以实现一些自定义功能?

câu trả lời hay nhất

您可以从 RouteData.DataTokens 获取它:

httpContext.Request.RequestContext.RouteData.DataTokens["area"]

如果您的 Controller 不在某个区域,则返回 vô giá trị;如果您的 Controller 在某个区域,则返回该区域的名称。

关于c# - 判断 Controller 是否在一个区域中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41875036/

29 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress