C# 布线可以';参数使用不同的ID名称时找不到ID
我有如下URL路径:C# 布线可以';参数使用不同的ID名称时找不到ID,c#,asp.net,routing,C#,Asp.net,Routing,我有如下URL路径: http://website.com/myController/myAction/123456 然而,我有时也有这样的要求: http://website.com/myController/myAction/?myID=123456 这会导致问题,因为ASP.NET正在查找ID,但我的参数名为myID。我不能改名字。我能解决这个问题吗 如果ID为空,我尝试重新路由: Server.Transfer("/myController/myAction/123456"); 但
http://website.com/myController/myAction/123456
然而,我有时也有这样的要求:
http://website.com/myController/myAction/?myID=123456
这会导致问题,因为ASP.NET正在查找ID,但我的参数名为myID。我不能改名字。我能解决这个问题吗
如果ID为空,我尝试重新路由:
Server.Transfer("/myController/myAction/123456");
但这不起作用,我得到了错误:
{"Error executing child request for /myController/myAction/123456."}
id转换过滤器可以将myID转换为id,因此请求
http://website.com/myController/myAction?myID=123456
将转换为http://website.com/myController/myAction/123456
通过此ActionFilter
public class IdConversionFilter : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (filterContext.HttpContext.Request.QueryString["myID"] != null)
{
filterContext.ActionParameters.Clear();
filterContext.ActionParameters.Add("id", Convert.ToInt32(filterContext.HttpContext.Request.QueryString["myID"]));
}
}
}
用IdConversionFilter装饰myAction
[IdConversionFilter]
public ActionResult myAction(int id)
{
return View();
}
HttpModule或global.asax中的一个处理程序可能很方便。您可以提供一个在global.asax中如何设置的示例吗?因为我需要将参数myID转换为ID