Requise paramètre de chaîne de requête dans ASP.NET de Base
À l'aide de ASP.NET de Base 1.1 avec VS2015 (sdk de la version 1.0.0-preview2-003131), j'ai le contrôleur suivant:
public class QueryParameters
{
public int A { get; set; }
public int B { get; set; }
}
[Route("api/[controller]")]
public class ValuesController : Controller
{
//GET api/values
[HttpGet]
public IEnumerable<string> Get([FromQuery]QueryParameters parameters)
{
return new [] { parameters.A.ToString(), parameters.B.ToString() };
}
}
Comme vous pouvez le voir, j'ai deux paramètres de la requête. Ce que je voudrais, c'est avoir l'un d'eux (ex: A
). C'est, je voudrais utiliser un attribut (si possible) pour dire que cet attribut est requis. Alors, je voudrais, comme ASP.NET pour ce faire, de validation, avant même l'appel de mon contrôleur.
J'aurais bien aimé utiliser le Newtonsoft RequiredAttribute pour utiliser les mêmes attributs comme je l'ai déjà utiliser pour valider les propriétés requises dans le PUT/POST contenu, mais depuis l'url n'est pas une chaîne JSON, il n'est évidemment pas utilisé.
Toute proposition ASP.NET Core vérifier automatiquement pour les paramètres de la requête?
Remarque que je sais que je peux la coder le vérifier moi-même à l'aide de nullable les paramètres de la requête mais que bat le but de laisser ASP.NET procéder à la validation avant d'appeler mon contrôleur, par conséquent, de garder mon contrôleur rangé.
OriginalL'auteur mabead | 2017-05-10
Vous devez vous connecter pour publier un commentaire.
Vous pouvez envisager d'utiliser le modèle de liaison de la fonctionnalité du cadre
Selon la documentation ici: Personnaliser le modèle de comportement de liaison avec les attributs
Je vous suggère d'ajouter un
BindRequiredAttribute
le modèle de la propriété.À partir de là, le cadre doit être capable de gérer la liaison et la mise à jour du modèle de l'état de sorte que vous pouvez vérifier l'état du modèle dans l'action
L'autre option serait de créer un modèle personnalisé classeur qui serait la faute de l'action si la chaîne de requête n'est pas présent.
Référence: Modèle Personnalisé De Liaison
OriginalL'auteur Nkosi
L'utilisation de l'attribut de routage et de la liste de chaque paramètre dans la fonction de HttpGet attribut.
Cela nécessitera e.g /5 et autoriser /5?B=6 requête de paramètres d'url.
OriginalL'auteur Esa Komulainen
Laisser la cadre de faire le travail pour vous. Voici une solution, comme il semble qu'il ya un certain nombre de façons de faire la même chose dans ASP.NET de Base. Mais c'est ce qui fonctionne pour moi et c'est assez simple. Il semble être une combinaison de certaines de ses réponses déjà données.
OriginalL'auteur Jeff Magill
Utiliser la validation du modèle. Vous pouvez définir un ViewModel et l'utilisation DataAnnotations pour marquer la propriété d'Un [Nécessaire]. Ensuite, dans votre action, il suffit de vérifier si ModelState.IsValid. Vous pouvez aussi facilement faire cela en utilisant une action de filtre comme indiqué dans cet article:
https://msdn.microsoft.com/en-us/magazine/mt767699.aspx
OriginalL'auteur ssmith