use*_*677 7 .net c# asp.net-core-mvc asp.net-core
使用.NET core MVC C#
我有一个控制器:
[ServiceFilter(typeof(MyCustomFilter))]
public class HomeController : Controller
{
public IActionResult Index(string type)
{
}
}
Run Code Online (Sandbox Code Playgroud)
type在我的过滤器中,我想获取作为查询字符串传递的字符串值。
我的过滤器为:
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = false)]
public class MyCustomFilter: ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
//this is always null
string id = filterContext.RouteData.Values["type"].ToString();
}
}
Run Code Online (Sandbox Code Playgroud)
我在这里缺少什么吗?因为我读过一些帖子,并且他们提到了上面的内容来做到这一点。
对于查询字符串中传递的参数,请使用:
string id = filterContext.Request.Query["type"];
Run Code Online (Sandbox Code Playgroud)
小智 5
我相信你可以使用类似下面的东西。我在日志过滤器中使用类似于下面的内容。日志过滤器代码也如下。您也可以迭代该集合。
string id = filterContext.ActionParameters["Type"];
Run Code Online (Sandbox Code Playgroud)
迭代所有参数并将它们聚合到最终写入文件的日志字符串中。
logString = filterContext.ActionParameters.Aggregate(logString, (current, p) => current + (p.Key + ": " + p.Value + Environment.NewLine));
Run Code Online (Sandbox Code Playgroud)