Использование .net core mvc c #
У меня есть контроллер как:
[ServiceFilter(typeof(MyCustomFilter))]
public class HomeController : Controller
{
public IActionResult Index(string type)
{
}
}
В моем фильтре я хочу получить строковое значение "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();
}
}
Все, что мне здесь не хватает. Потому что я прочитал несколько сообщений, и они упомянули выше, чтобы сделать это.
Благодарность
2 ответа
Для параметров, переданных в строке запроса, используйте:
string id = filterContext.Request.Query["type"];
Я считаю, что вы могли бы использовать что-то вроде следующего. Я использую что-то похожее на приведенное ниже в фильтре регистрации. Код фильтра журнала также приведен ниже. Вы также можете перебрать коллекцию.
string id = filterContext.ActionParameters["Type"];
Перебор всех параметров и их объединение в строку журнала, которая в конечном итоге записывается в файл.
logString = filterContext.ActionParameters.Aggregate(logString, (current, p) => current + (p.Key + ": " + p.Value + Environment.NewLine));
Похожие вопросы
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.