2010-11-01 7 views
1

J'ai un modèle avec une propriété qui pointe vers un fichier contenant du code HTML. Ma vue fortement typée à ce modèle utilise une méthode HTML personnalisée pour résoudre et renvoyer le code HTML du fichier. Fonctionne très bien jusqu'à présent.Affichage de plusieurs valeurs à l'aide de MVC

Le code HTML lu dans chaque fichier contiendra différents contrôles dont les valeurs doivent être récupérées lorsque le formulaire est POSTé.

Quel serait le meilleur moyen d'avoir accès aux valeurs de contrôle POSTed dans ma méthode de contrôleur?

Je préférerais une solution non jQuery, mais je ne suis pas sûr que le framework MVC puisse me fournir ces valeurs? Peut-il fournir une liste de paires clé/valeur au contrôleur en quelque sorte?

Répondre

2

Vous avez essentiellement deux options.

1) Utilisez les vieilles variables de demande comme tout ce que nous avons fait dans les formulaires Web ASP.NET.

Par exemple, dans votre méthode d'action du contrôleur, vous pouvez récupérer une valeur actuelle sur la forme avec la méthode suivante

public ActionResult SomeAction() { 
    var request = this.ControllerContext.HttpContext.Request; 
    bool boolParam = bool.Parse(request["boolParam"] ?? "false"); 
} 

2) Créer une coutume modèle Binder pour laisser le cadre emballer ces valeurs dans une classe personnalisée objet.

Cette méthode serait un peu plus difficile au début car vous devez créer un classeur personnalisé mais privilégier la lisibilité du code de votre contrôleur. Pour plus de détails sur la création de classeurs modèles personnalisés donnent un regard sur les liens suivants (vous pouvez trouver plus avec une simple recherche)

Hope it helps

+0

Vous devriez absolument suivre la route ModelBinder - beaucoup plus facile à maintenir et c'est l'endroit idéal pour le faire dans MVC. Vous passez essentiellement par le formulaire, mais au moins, c'est au même endroit. –

+0

Tout à fait d'accord – Lorenzo

3

Vous pouvez utiliser FormCollection dans ASP.NET MVC.

public ActionResult SomeAction(FormCollection form) { 
    ... 
} 
+0

J'ai manqué de mentionner celui-ci car il fonctionne d'une manière très similaire à la méthode 1 sur ma réponse. – Lorenzo

0

Le contenu des fichiers HTML est-il dynamique ou connu au moment du design? Si vous le savez maintenant, vous pouvez demander à chacun de publier sa propre action, puis de taper fortement les paramètres.