В настоящее время я занимаюсь разработкой проекта ASP.NET MVC.
Я хочу реализовать ActionFilter, который заботится о правах собственности. Пользователь может получить доступ только к тем объектам, с которыми он связан в базе данных.
Теперь я не хочу внедрять это в каждый контроллер. Вместо этого я хочу использовать ActionFilter.
Я уже могу определить входящие параметры и прочитать их значения с помощью следующего кода:
Контроллер
[Validate(ParameterName = "userID", EntityType="User")]
public ActionMethod Edit(int userID){...
ActionFilter
public string ParameterName { get; set; }
public string EntityType { get; set; }
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (EntityType != null && ParameterName != null)
{
Debug.Print("Checking if user has access to the Type \"" + EntityType + "\" with the
ID " + filterContext.ActionParameters[ParameterName]);
...
Пока это работает отлично. Но когда дело доходит до непримитивных типов (например, User), я нахожу только значение NULL в filterContext.ActionParameters [ParameterName]);
См
[HttpPost]
[Validate(ParameterName = "user", EntityType = "User")]
public ActionResult Edit(User user)
{....
Я не могу понять, почему. Может быть потому, что это метод HttpPost?