我有这样的网址路径:
http://website.com/myController/myAction/123456
但是,我有时也有这个要求:
http://website.com/myController/myAction/?myID=123456
这会导致问题,因为ASP.NET正在查找ID,但我的参数名为myID。我不能改名字。无论如何我能解决这个问题吗?
如果ID为null,我试图重新路由:
Server.Transfer("/myController/myAction/123456");
但是这不起作用,我得到错误:
{"Error executing child request for /myController/myAction/123456."}
答案 0 :(得分:0)
ID转换过滤器可以将myID转换为id,因此请求http://website.com/myController/myAction?myID=123456
将通过此ActionFilter转换为http://website.com/myController/myAction/123456
。
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();
}