Le passage des données à partir Vue Partielle de la Vue parente
Si j'ai une vision et une Vue Partielle, est-il possible que je puisse transmettre des données à partir de la Vue Partielle de la mère?
Donc, si j'ai View.cshtml
:
<div id="@someDataFromPartialSomehow">
@Html.Partial("_PartialView")
</div>
Et _PartialView.cshtml
:
@{ someDataFromPartialSomehow = "some-data" }
<div>
Some content
</div>
Comment pourrais-je aller sur la mise en œuvre de quelque chose comme cela?
J'ai essayé d'utiliser ViewBag.SomeDataFromPartialSomehow
, mais présente seulement les résultats en null
dans le Parent.
Une tentative
Pour essayer de contourner le problème des données générées avant d'être appelé, j'ai essayé ceci:
View.cshtml
:
@{ var result = Html.Partial("_PartialView"); }
<div id="@ViewData["Stuff"]">
@result
<div>
_PartialView.cshtml
:
@{ ViewData["Stuff"] = "foo"; }
<div>
Content
</div>
Mais l'appel à la @ViewDate["Stuff"]
encore ne rend rien malheureusement.
Que voulez-vous dire par "passer des données à partir de la Vue Partielle de la mère" exactement?
Ainsi dans l'exemple que j'ai donné, l'idée est que l'ID de l'emballage div est en train d'être définie à partir de la vue partielle.
Ainsi dans l'exemple que j'ai donné, l'idée est que l'ID de l'emballage div est en train d'être définie à partir de la vue partielle.
OriginalL'auteur dav_i | 2013-11-04
Vous devez vous connecter pour publier un commentaire.
Vous pourriez partager l'état entre les points de vue à l'aide de la HttpContext.
et puis:
Sauf que l'exemple que vous avez indiqué dans votre question:
vous tentez d'utiliser la
someDataFromPartialSomehow
même AVANT l'invocation de la vue partielle, qui est évidemment impossible.Également garder à l'esprit que ce que vous essayez d'atteindre est mauvaise conception. Si une vue partielle ne peut travailler que dans le contexte d'un parent particulier, alors vous pourriez avoir besoin de repenser votre séparation des points de vue. Vues partielles est quelque chose qui doit être INDÉPENDANTS et RÉUTILISABLES, peu importe le contexte dans lequel il est placé. Si il n'assume choses à propos de l'hébergement du parent puis, il y a un sérieux problème de conception ici.
Veuillez voir ma mise à jour pour voir ce que j'ai essayé.
Voir ma réponse mis à jour. Vous pouvez utiliser HttpContext de partager des données. Mais encore une fois, merci de ne pas le faire, c'est terriblement mauvaise conception. Il y a de meilleures façons d'atteindre votre objectif initial.
Merci pour votre mise à jour - il fonctionne un régal - mais ne se sentent un peu sale! Quelle meilleure façon suggérez-vous?
Je ne peux pas suggérer une meilleure façon parce que je ne sais pas ce que vous essayez d'atteindre/de résoudre en premier lieu. Dans votre question vous seulement demandé comment passer des données à partir vue partielle de la vue parent, mais vous ne vous explique pourquoi vous devez faire en premier lieu.
OriginalL'auteur Darin Dimitrov
J'ai une suggestion pour vous.
Mettre cachés champs de saisie dans la vue partielle et de les obtenir à partir de javascript.
Ex: Dans _PartialView.cshtml
De votre point de vue
Notez que vous devez écrire la fonction js à l'intérieur du document prêt, car la vue partielle doit être entièrement chargé.
OriginalL'auteur Haritha
Ainsi, après réflexion, je suis venu avec cette:
View.cshtml
:_PartialView.cshtml
:Où
NullingExpandoObject
est Jon Skeet est nullable dictionnaire dynamiqueOriginalL'auteur dav_i
Vous pouvez simplement utiliser javascript pour cela.
J'ai ce caché zone de texte en vue partielle et je veux accéder à sa valeur dans la vue parent
Donc, de la façon la plus simple est la suivante: le
OriginalL'auteur Hitanshi Mehta
La plus simple chose que vous pourriez faire est de _PartialView.cshtml:
et dans la vue parent:
puis dans la vue parent, vous pouvez utiliser:
OriginalL'auteur mcorte