Я хочу регистрировать каждое имя параметра метода действия и его соответствующие значения в базе данных в виде пары ключ-значение. В рамках этого я использую OnActionExecuting ActionFilterAttribute, поскольку это будет правильное место (метод OnActionExecuting получит вызов для вызова всех методов действий контроллера) для получения контекста Action Executing.
Я получаю значение для типов .Net (string, int, bool). Но я не могу получить значение пользовательских типов (настраиваемых типов). (например, модель входа). В моей модели могут быть и другие вложенные пользовательские типы.
Я пытался получить значения пользовательских типов, но я получаю единственное имя класса в виде строки. Я надеюсь, что мы можем сделать в размышлении.
Не могли бы вы помочь кому-нибудь решить проблему. так как я новичок в размышлениях. Это будет полезно для меня. Заранее спасибо. Мне нужно получить имя и значение этих типов в OnActionExecuting.
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
ActionParameter = new SerializableDictionary<string,string>();
if(filterContext.ActionParameter != null)
{
foreach(var paramter in filterContext.ActionParameter)
{
//able to get returnUrl value
//unable to get model values
ActionParameter.Add(paramter.Key, paramter.Value);
}
}
}
public ActionResult Login(LoginModel model, string returnUrl)
{
return View(model);
}
Пользовательский тип
public class LoginModel
{
public string UserName {get;set;}
public string Password {get;set;}
//User defined type
public UserRequestBase Request {get;set;}
}
//User defined type
public class UserRequestBase
{
public string ApplicationName {get;set;}
}
Я могу получить значение returnUrl (параметр метода входа) в OnActionExecuting, но не для модели (параметр метода входа). Я могу видеть значения, но не знаю, как получить к ним доступ, я использовал typeof, хотя я не могу его получить, но мне нужен общий, потому что у меня есть 20 методов в контроллере, поэтому я мог не только для LoginModel.