2009-06-01 7 views
6

Je suis avec un problème, j'ai un lien ajax qui passe un paramètre, mais, la page qu'il ouvre n'a pas besoin de ce paramètre. La page ne charge que 2 vues partielles, l'une d'entre elles nécessite que ce paramètre soit passé à la page pour charger les données correctement, et l'autre a juste besoin de charger un formulaire, donc, n'a pas besoin de ce paramètre. Comment puis-je réaliser ceci?asp.net mvc paramètre de la page à une vue partielle

Répondre

0

// Contrôleur

public ActionResult EditFunctions(int id) 
    { 

     var sysfunctions= UnisegurancaService.FunctionsRepository.All(); 
     return View(sysfunctions); 
    } 
    // This is the controller (it does no need the parameter "ID") 

// est la vue "EditFunctions"

<div id="formFunction"> 
<% Html.RenderPartial("FormFunction"); %> 
</div> 


<div id="gridFunction"> 
<% Html.RenderPartial("GridFunction"); %> // The grid needs the ID to work correctly but its in the parent page not in the partial call....and the call is an ajax call 
</div> 
+0

Votre vue partielle GridFunction est-elle fortement typée? –

6

Pour faire ce que vous voulez, vous devez ajouter l'identifiant à la construction ViewData.

var sysfunctions= UnisegurancaService.FunctionsRepository.All(); 
ViewData["NeededID"] = id 
return View(sysfunctions); 

alors dans votre vue où vous rendre le

<%= Html.RenderPartial("GridFunction", (int)ViewData["NeededID"]) %> 

Moulage partielle au besoin bien sûr.

Tout ce qui est poussé pendant que le second param devient le .Model dans le partiel. Je suggérerais aussi fortement en tapant vos partiels.

+0

Désolé ... erreur de type. Corrigé –

+0

Pas de problème. J'ai rendu ma réponse plus utile. Si vous ne voulez pas dactylographier fortement vos partiels (ce que je vous suggère de les taper), alors le conseil de eu-ge-ne avec ViewDataDictionary est meilleur. –

3

Essayez ceci:

<% Html.RenderPartial("GridFunction", new ViewDataDictionary {{"Id", ViewData["Id"]}}); %> 

mise à jour:

Et ajoutez dans votre action de contrôleur:

ViewData["Id"] = Id; 

mise à jour:

Et dans votre GridFunction Partie I al vue, vous pouvez accéder à Id comme:

<%= ViewData["Id"] %> 
0

Si une dépendance de la page a besoin du paramètre, la page a besoin de savoir assez pour passer les données, de sorte que la page doit être en mesure de fournir les données. Ou, plus simplement, ajoutez simplement le paramètre aux viewdata de la page et faites-le avec.

Questions connexes