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/)
因此,有没有什么最佳实践/简单的方法可以让我的页面重定向到链接,这些链接可以在项目构建时进行编译器检查?
如果有人发现了这个,我就创建了一个快速应用程序,运行程序生成的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埋在参数中时,必须与我们调用的方法的参数匹配,否则这将不起作用!