2008-12-01 10 views
2

J'ai un contrôle utilisateur qui sera utilisé sur plusieurs pages (comme c'est la coutume avec les contrôles utilisateur) qui contient un formulaire. Je pensais à la façon de garantir sa fonctionnalité.Comment rendre un formulaire de contrôle utilisateur portable vers d'autres pages?

D'abord je voulais avoir un seul contrôleur avec une seule méthode accepte les valeurs pour ce formulaire. La seule chose qui me bloque là-bas est que, après que cette méthode soit terminée avec les calculs, elle doit être transférée vers un autre contrôleur et une autre méthode en fonction de la vue sur laquelle le contrôle utilisateur a pris naissance.

Ensuite, je voulais que tous les contrôleurs qui ont cette commande usercontent de la même méthode fixe qui serait ensuite redirigée vers la page par défaut pour ce contrôleur. Cela ne fonctionnerait que si la méthode fixe avait exactement une option à transmettre (c'est le cas maintenant, mais peut-être pas demain) ET que je pourrais en quelque sorte obtenir le contrôleur appelant lorsque je construis mon tag de formulaire.

Existe-t-il un moyen efficace de faire fonctionner une de mes suggestions ou existe-t-il une autre option pour que cela fonctionne?

Répondre

2

Vous savez, vous pouvez ajouter des propriétés publiques à votre contrôle utilisateur puis, dans le balisage, reportez-vous à ces propriétés pour faire les choses appropriées dans le contexte actuel ...

Par exemple:

MyControl.ascx.cs:

/*snip*/ 
public string FormAction {get;set;} 
/*snip*/ 

MyControl.ascx:

<% using(BeginForm(FormAction)){ %> 
<!-- yadda --> 
<% } %> 

Et dans tous les ASPX:

<!-- boring html goes here --> 
<%=Html.RenderUserControl(“~/Views/Shared/MyControl.ascx”,null /*orwhatever*/, new {FormAction="ActionThatHandlesMyFormPostLol"})%> 

BeginForm prend un certain nombre de différents arguments qui vous permettront de contrôler où et comment vos messages de formulaire. Je ne suis pas sûr à 100% de votre problème, mais j'espère que cela vous donnera une idée sur la façon d'avancer ...

+0

oui, c'est quelque chose que je ne connaissais pas. Je vais avoir une vérification et donner quelques commentaires après :) –

+0

Où exactement avez-vous obtenu la méthode Html.RenderUserControl()? Je rends tous mes partiels avec RenderPartial() et cela prend un ViewDataDictionary comme paramètre que vous suggérez –

+0

J'utilise le mvc beta1 sur quelle version êtes-vous? –

Questions connexes