Как получить имя модели в ValidateModelAttribute в ASP.NET MVC - PullRequest
0 голосов
/ 23 мая 2019

У меня есть этот фильтр, который выполняет все действия: -

public class ValidateModelAttribute : ActionFilterAttribute
    {
        public override void OnActionExecuting(HttpActionContext actionContext)
        {
            if (!actionContext.ModelState.IsValid)
            {
                actionContext.Response = actionContext.Request.CreateErrorResponse(
                    HttpStatusCode.BadRequest, actionContext.ModelState);
            }
        }
    }

Вопрос первый: Здесь можно проверить название модели? Так, например, если это Модель по имени "OpportunityManagerModel", я хочу сделать что-то другое. Я хочу вернуть пользовательский объект ошибки.

Вопрос второй: могу ли я получить доступ к самой модели в методе. Поскольку я хочу выполнить некоторую пользовательскую проверку, такую ​​как проверка коллекции и проверка условия.

1 Ответ

0 голосов
/ 23 мая 2019

Вы можете получить доступ к модели с помощью actionContext.Controller.ViewData.Model или с помощью ActionExecutingContext.ActionArguments, который является словарем, и вам нужно написать что-то вроде этого, чтобы получить модель.

foreach(var arg in actionContext.ActionArguments.Values.Where(x => x is T))
{
     T model = arg as T;
}

И вы можете получить имямодель, как это:

var model = new OpportunityManagerModel();
var modelName = model.GetType().Name;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...