Comment envoyer de l'objet du modèle en Html.RenderAction (MVC3)
Je suis l'aide de MVC3 rasoir, et je suis en train de passer d'un objet à une vue partielle, et il ne fonctionne pas.
Cela fonctionne très bien sans l'envoi de l'objet modèle de la vue partielle:
Html.RenderAction("Index", "ViewName");
Essayer cela n'a pas envoyé le modèle objet, je reçois des valeurs null à la place (l'objet a données, et la vue n'attend que ça):'
Html.RenderAction("Index", "ViewName", objectModel);
Est-ce encore possible à l'aide de RenderAction?
Merci!
Edit: j'ai trouvé l'erreur, il y a une erreur avec le contrôleur de l'action qui n'a pas de ramasser l'objet envoyé. Merci à tous pour votre aide!
- pourriez-vous donner la signature de l'action que vous appelez?
- pourquoi êtes-vous en passant la viewname comme paramètre? vous devriez être en train de passer à l'action et le contrôleur de la place
- nouveau {objectParam1 = objectModel1, objectParam1 = objectModel2})
Vous devez vous connecter pour publier un commentaire.
dites que vous voulez passer
foo
comme modèle, le premiermaintenant, faire un ActionResult
appeler
Vous pouvez passer d'un objet à une méthode du contrôleur à l'aide de l'Action. Cela peut être fait sur n'importe quel disponnible vue, par exemple j'en ai un dans une bibliothèque partagée qui se construit à projet de la corbeille les dossiers de référence de mon projet partagé (propriétés - Copier si plus récent sur le fichier de vue, dans Visual Studio). Il est fait comme suit:
Contrôleur:
MVC page (à l'aide de la syntaxe Razor):
ou à l'aide de
RenderAction
méthode:Remarque: dans le
@Html.Action()
, leModel
objet doit être de typeMyModel
et que le 3ème paramètre doit être défini sur le contrôleur nom de la variable, dont la mienne estMyModel m
. Lem
est ce que vous devez affecter à l', donc je nem = Model
.Normalement, si j'ai un modèle déjà disponible, il est plus logique d'utiliser
Html.Partial
que d'essayer de rendre une action.Où
Foo.cshtml
est un fichier de vue (peut-être dans votre dossier Partagé) fortement typé avec avec@model FooProject.Models.FooModel
ou quel que soit votre modèle est appelé. Cela peut être aussi complexe qu'un modèle comme vous le souhaitez. Le modèle est de votre page principale du modèle dans lequel vous devez définirFooModel
, ou simplement de vous omettez ce paramètre si leFoo
vue utilise le même modèle que celui de la page parent.RenderAction
est généralement mieux lorsque vous venez de paramètres simples, parce que vous êtes juste en simulant une demande à la régularité de l'action qui a de routage/paramètres de chaîne de requête - et puis dumping que la réponse sur votre page. Cela fonctionne bien si vous avez besoin de mettre quelque chose dans une Mise en page qui n'est pas disponible dans votre page du modèle, tel qu'un élément dans une barre latérale.