【发布时间】:2012-01-18 18:44:02
【问题描述】:
我需要在我的应用程序中禁用 URL 才能手动更改。
例如:我有 index.aspx 页面。因为我有一个名为 Create 的按钮。当我单击时,我将转到 Create.aspx 页面。
基于一些验证,我正在禁用索引页面上的创建按钮。我能够做到这一点。
我的问题是当我手动更改要访问的 URL 时,有什么方法可以手动禁用 URL?
谢谢
【问题讨论】:
标签: asp.net asp.net-mvc asp.net-mvc-2
我需要在我的应用程序中禁用 URL 才能手动更改。
例如:我有 index.aspx 页面。因为我有一个名为 Create 的按钮。当我单击时,我将转到 Create.aspx 页面。
基于一些验证,我正在禁用索引页面上的创建按钮。我能够做到这一点。
我的问题是当我手动更改要访问的 URL 时,有什么方法可以手动禁用 URL?
谢谢
【问题讨论】:
标签: asp.net asp.net-mvc asp.net-mvc-2
在不知道禁用逻辑的详细信息或此 url 指向的位置的情况下,我会说这是自定义操作过滤器的工作。
这是一个自定义验证过滤器的示例:
public class CustomAuthorizeAttribute : AuthorizeAttribute
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
//the base will just do the default behavior
base.OnAuthorization(filterContext);
//...if(same eval logic for button)==true
filterContext.Result = new RedirectResult(<url>); //or RedirectToRoute(...
}
}
然后在控制器的 action 方法中,应用属性...
【讨论】:
当用户可以查看创建页面时设置会话变量。
Session["Create"]=true;
当他们到达 create.aspx 时,检查该会话变量。如果是真的,就让他们进来,如果不是——把他们放到你的索引页上。
【讨论】:
当你点击索引页面上的“CreateButton”时设置一个会话变量。
//Code for your button on your index page
Session["allowaccesstoCreatePage"]=1;
在您的 create.aspx 页面加载时检查此会话变量
if(Session["allowaccesstoCreatePage"]==null)
{
Response.Redirect("index.aspx");
}
【讨论】:
在 Create.aspx 的 Page_Load 事件中输入这个,或者在 Page_Init 事件中更好地输入
if (Request.UrlReferrer == null)
Response.Redirect("~/index.aspx");
【讨论】: