ASP.NET响应.重定向,删除metasapiens页面方法

本文关键字:metasapiens 方法 删除 NET 响应 重定向 ASP | 更新日期: 2023-09-27 18:20:39

我想取代Metasapiens PageMethods,本质上这创建了一个允许运行时检查链接的类,

例如

Response.Redirect(MyPageMethods.Web.Display.Customer(custId));

这将转到显示页面,然后用客户id调用客户方法。但是我想更新到.Net 4.5,PageMethods的开发在2007年停止。
(http://metasapiens.com/pagemethods/)

因此,有没有什么最佳实践/简单的方法可以让我的页面重定向到链接,这些链接可以在项目构建时进行编译器检查?

ASP.NET响应.重定向,删除metasapiens页面方法

如果有人发现了这个,我就创建了一个快速应用程序,运行程序生成的xml文件,并创建了具有url和其中所有方法的类,例如:

namespace PS.Web.Pages.Maintenance.Area.Display
{
    public static class DisplayArea
    {
        public static string URL = "/Pages/Maintenance/Area/Display/DisplayArea.aspx";
        public static string Show(System.Int32 areaId)
        {
            return string.Format("{0}?PageMethod=Show&areaId={1}", URL, areaId);
        }
    }
}

然后你只需要在一个基本页面中添加一些东西,这样在页面加载时我们就可以初始化页面,并传入参数

protected void Page_Load(object sender, EventArgs e) 
{
    InitiatePage();
}
private void InitiatePage()
{
    var queryString = Request.QueryString;
    var pageMethodObject = queryString["PageMethod"];
    if (pageMethodObject != null)
    {
        string methodName = pageMethodObject.ToString();
        Type ty = this.GetType().BaseType;
        MethodInfo methodInfo = ty.GetMethod(methodName, BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public);
        if (methodInfo != null)
        {
            ParameterInfo[] parameters = methodInfo.GetParameters();
            if (parameters.Length == 0)
            {
                methodInfo.Invoke(this, null);
            }
            else
            {
                IList<object> parametersArray = new List<object>();
                foreach (var parameter in parameters)
                {
                    var value = queryString[parameter.Name];
                    object obj = null;
                    if (parameter.ParameterType.IsEnum)
                    {
                        obj = Enum.Parse(parameter.ParameterType, value);
                    }
                    else
                    {
                        obj = Convert.ChangeType(value, parameter.ParameterType);
                    }
                    parametersArray.Add(obj);
                }
                //try and run the method
                methodInfo.Invoke(this, parametersArray.ToArray());
            }
        }
    }
}

现在它应该会自动连接起来。。。。所以现在智人的页面方法已经不见了,我们不必担心它们!-显然,当我们创建的类的URL埋在参数中时,必须与我们调用的方法的参数匹配,否则这将不起作用!