J'ai eu une belle fonction qui a pris mon FormCollection (fourni par le contrôleur). Maintenant, je veux faire une liaison de modèle à la place et faire appel à ma reliure modèle cette fonction et il a besoin de la FormCollection. Pour une raison quelconque, je peux le trouver. Je pensais que cela aurait été controllerContext.HttpContext.Request.Form
Récupération de FormCollection sur controllerContext pour le classeur de modèle personnalisé
8
A
Répondre
15
Essayez ceci:
var formCollection = new FormCollection(controllerContext.HttpContext.Request.Form)
FormCollection est un type nous avons ajouté à ASP.NET MVC qui a sa propre ModelBinder. Vous pouvez regarder le code pour FormCollectionBinderAttribute pour voir ce que je veux dire.
0
Utilisez bindingContext.ValueProvider (et bindingContext.ValueProvider.TryGetValue, etc.) pour obtenir des valeurs directement.
1
L'accès à la collection de formulaires semble être désapprouvé. Voici un exemple d'un projet MVC4 dans lequel j'ai un Razor EditorTemplate personnalisé qui capture la date et l'heure dans des champs de formulaire distincts. Le classeur personnalisé récupère les valeurs des champs individuels et les combine en un DateTime
.
public class DateTimeModelBinder : DefaultModelBinder
{
private static readonly string DATE = "Date";
private static readonly string TIME = "Time";
private static readonly string DATE_TIME_FORMAT = "dd/MM/yyyy HH:mm";
public DateTimeModelBinder() { }
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
if (bindingContext == null) throw new ArgumentNullException("bindingContext");
var provider = new FormValueProvider(controllerContext);
var keys = provider.GetKeysFromPrefix(bindingContext.ModelName);
if (keys.Count == 2 && keys.ContainsKey(DATE) && keys.ContainsKey(TIME))
{
var date = provider.GetValue(string.Format("{0}.{1}", bindingContext.ModelName, DATE)).AttemptedValue;
var time = provider.GetValue(string.Format("{0}.{1}", bindingContext.ModelName, TIME)).AttemptedValue;
if (!string.IsNullOrWhiteSpace(date) && !string.IsNullOrWhiteSpace(time))
{
DateTime dt;
if (DateTime.TryParseExact(string.Format(System.Globalization.CultureInfo.CurrentCulture, "{0} {1}", date, time),
DATE_TIME_FORMAT,
System.Globalization.CultureInfo.CurrentCulture,
System.Globalization.DateTimeStyles.AssumeLocal,
out dt))
return dt;
}
}
return base.BindModel(controllerContext, bindingContext);
}
}
Questions connexes
- 1. Modifier le classeur de modèle par défaut dans asp.net MVC
- 2. ASP.NET MVC - mélange personnalisé et modèle par défaut de liaison
- 3. Conseils sur l'éditeur de texte pour le format de document personnalisé ou le modèle de domaine
- 4. ASP.NET MVC - Plusieurs modèles dans un classeur et un classeur
- 5. ASP.NET Question du classeur modèle pour la mise à jour de la table enfant
- 6. Documents de modèle de récupération après sinistre
- 7. NHibernate + ASP.NET MVC: la session du modèle de classeur est fermée
- 8. Valeur de propriété de définition de problème sur le modèle de contrôle personnalisé Pièce
- 9. sur mesure ActionFilter envoyer problème FormCollection
- 10. Liaison d'une nouvelle propriété sur le contrôle personnalisé pour afficher le modèle
- 11. Exemple de modèle de commande WPF personnalisé
- 12. Modèle de contrôle personnalisé SharePoint non appliqué
- 13. Comment passer l'objet FormCollection pour testmethod pendant le test unitaire
- 14. balises de modèle Django personnalisé et chargeurs modèle
- 15. Renvoyer des éléments FormCollection avec le préfixe
- 16. FormCollection Convertir JSON
- 17. validation pour le partage de liste personnalisé
- 18. ASP.NET MVC a publié la liaison de modèle de fichier lorsque le paramètre est Modèle
- 19. Récupération d'un numéro de téléphone mobile (cellulaire) sur le WAP
- 20. récupération de mot de passe pour le fichier SyBase
- 21. Modèle de contrôle personnalisé Wpf - taille de police relative
- 22. STL iterator avec modèle personnalisé
- 23. récupération de mot de passe pour drupal
- 24. Comment modifier le séparateur pour les données de groupe dans formCollection dans la vue MVC?
- 25. Validateur personnalisé Asp.NET MVC Pour un modèle View?
- 26. modèle de définition de site personnalisé wss 3.0
- 27. Copie des données du classeur vers un autre classeur
- 28. VSTS 2010 Créer un modèle de processus personnalisé
- 29. VSTO 3.0 Obtenir/modifier une connexion de classeur Excel 2007
- 30. Wordpress récupération Enfants de poste