0
在过去的几个小时里,我一直在努力。我所要做的就是像这样从当前路线中选择操作参数。这个方法驻留在一个简单的静态助手类中。使用助手类访问ActionExecutingContext
public static string GetStateName(ActionExecutingContext filterContext)
{
var stateParam = filterContext.ActionParameters.Where(p => p.Key == RouteConst.StateName).FirstOrDefault();
return !string.IsNullOrEmpty(stateParam.Key) ? stateParam.Value.ToType<string>() : string.Empty;
}
但是,我不喜欢在每次必须调用此方法时传递上下文的想法。有没有办法像HttpContext.Current一样访问当前正在执行的上下文?
更新:使用Necros的建议,这是我最终做的。
公共静态类ActionExtensions {
public static string GetMarketName(this ActionExecutingContext filterContext)
{return GetActionParamValue(filterContext, RouteConst.MarketName).ToType<string>();}
public static string GetStateName(this ActionExecutingContext filterContext)
{return GetActionParamValue(filterContext, RouteConst.StateName).ToType<string>();}
private static string GetActionParamValue(ActionExecutingContext filterContext, string actionParamName)
{
var actionParam = filterContext.ActionParameters.Where(p => p.Key == actionParamName).FirstOrDefault();
return !string.IsNullOrEmpty(actionParam.Key) ? actionParam.Value.ToType<string>() : string.Empty;
}
ToType()是其内部使用Convert.ChangeType(值,类型)另一种扩展方法。