我在自定义RouteData
Action Filter
filterContext.RouteData.Values.Add("accountId", accountId);
filterContext.RouteData.Values.Add("permission", (int)permission);
然后我有一个像下面这样的动作
public ActionResult Get(Guid accountId, int permission, int id) {
}
我可以通过路线将RouteData
值与动作参数结合吗?如果是这样,怎么样?
我想使用诸如
之类的网址http://localhost/Users/Get/1
他们的路线数据存在,可以使用
进行检索Guid accountId = (Guid)RouteData.Values["accountId"];
Permission permission = (Permission)RouteData.Values["permission"];
答案 0 :(得分:1)
您应该创建自定义ValueProvider
,而不是动作过滤器
有关详细信息,请参阅here。
答案 1 :(得分:1)
您可以使用ActionParameters属性:
public class MyActionFilterAttribute: ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
filterContext.ActionParameters["accountId"] = Guid.NewGuid();
filterContext.ActionParameters["permission"] = 456;
}
}
然后:
public class HomeController : Controller
{
[MyActionFilter]
public ActionResult Index(Guid accountId, int permission, int id)
{
return Content(string.Format("accountId={0}, permission={1}", accountId, permission));
}
}
当您请求/home/index/123
时,会显示以下内容:
accountId=f72fddb8-1c35-467b-a479-b2668fd5b2ec, permission=456