Asp.net 4.5 自定义属性网络表单
Asp.net 4.5 Custom Attribute Webform
使用 Asp.Net 旧项目,要访问网络表单,我需要创建一个自定义 class 属性来读取用户权限,例如 'Rights.ViewDashboard' 或 'Rights.CanEdit' 等。 class代码是:
[AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]
public class AuthorizationAttribute : Attribute
{
public AuthorizationAttribute(Rights permission)
{
if (Security.IsAuthorizedTo(permission))
return;
HttpContext.Current.Server.TransferRequest("~", false);
}
}
在我的 aspx 网络表单中:
[Authorization(Rights.ViewDashboard)]
public partial class DashboardRisorse : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
}
当用户在没有特定权限的情况下调用网络表单时,页面不会加载,网站会被重定向到默认页面。但是,如果他刷新页面,则代码不会执行,属性将被忽略并加载页面。调试时我看到这个属性只执行一次。
我的错在哪里?
我不需要 Net Core 解决方案,因为该项目有旧程序集。
谢谢
英德
我在这里假设您正在尝试定义类似于 MVC 中的 ActionFilter 属性的自定义属性。不幸的是 ASP.Net 的工作方式不同。
你有两个选择
创建一个 HttpModule 并使用可用的事件之一来构建您的逻辑
编写您要在页面加载中执行的逻辑。使用 Page.IsPostBack 来确定它是页面的初始加载还是页面正在回发。在 if..else if conditions
中写下你需要的逻辑
如果我的假设不正确,请提供有关您的查询的更多详细信息,特别是您尝试使用该属性实现的目标是什么。
使用 Asp.Net 旧项目,要访问网络表单,我需要创建一个自定义 class 属性来读取用户权限,例如 'Rights.ViewDashboard' 或 'Rights.CanEdit' 等。 class代码是:
[AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]
public class AuthorizationAttribute : Attribute
{
public AuthorizationAttribute(Rights permission)
{
if (Security.IsAuthorizedTo(permission))
return;
HttpContext.Current.Server.TransferRequest("~", false);
}
}
在我的 aspx 网络表单中:
[Authorization(Rights.ViewDashboard)]
public partial class DashboardRisorse : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
}
当用户在没有特定权限的情况下调用网络表单时,页面不会加载,网站会被重定向到默认页面。但是,如果他刷新页面,则代码不会执行,属性将被忽略并加载页面。调试时我看到这个属性只执行一次。 我的错在哪里? 我不需要 Net Core 解决方案,因为该项目有旧程序集。 谢谢
英德
我在这里假设您正在尝试定义类似于 MVC 中的 ActionFilter 属性的自定义属性。不幸的是 ASP.Net 的工作方式不同。
你有两个选择
创建一个 HttpModule 并使用可用的事件之一来构建您的逻辑
编写您要在页面加载中执行的逻辑。使用 Page.IsPostBack 来确定它是页面的初始加载还是页面正在回发。在 if..else if conditions
中写下你需要的逻辑
如果我的假设不正确,请提供有关您的查询的更多详细信息,特别是您尝试使用该属性实现的目标是什么。