Question

J'ai un projet Microsoft MVC avec une action "Foo" dont la vue ( "Foo.aspx") contient les lignes:

<%= Html.ActionLink("mylinktext1", "bar") %>
<%= Html.ActionLink<MyController>(x => x.Bar(), "mylinktext2") %>

Quand je frappe ce à partir d'un navigateur Web ou le charger à partir d'un appel AJAX, il retourne correctement:

<a href="/bar">mylinktext1</a>
<a href="/Bar">mylinktext2</a>

Mais quand je l'appelle l'action d'une autre vue comme ceci:

<% Html.RenderAction<MyController>(x => x.Foo()); %>

Ensuite, les liens sont rendus sans objectifs.

<a href="">mylinktext1</a>
<a href="">mylinktext2</a>

Pourquoi serait-ce qui se passe, et comment puis-je travailler autour d'elle?

Était-ce utile?

La solution

Je ne sais pas si c'est ce que vous faites mal, mais je n'ai jamais utilisé Html.RenderAction avec des actions qui renvoient des vues ASPX. Quand j'appelle RenderAction, je fais en sorte que j'appelle une action de contrôleur qui retourne ASCX Voir le contrôle de l'utilisateur.

En général fichier .ASPX est une page entière et vous ne pouvez pas (ne doit pas) rendre ce dans une autre page. Donc, je pense que vous devriez en faire Voir le contrôle de l'utilisateur (ASCX) et le mettre soit dans ou partagé dans le dossier de vue du contrôleur.

En fonction de votre commentaire: Bien sûr, cela est très bien. Vous revenez simplement vos données de modèle à vos vues / vue des contrôles utilisateur. Lorsque vous les chargez à travers AJAX, vous devriez envisager la mise en œuvre Render View à cordes. Rechercher Google ou Stack pour plus d'informations à ce sujet. Vous pouvez également rechercher une chose appelée attribut JsonPox pour vos méthodes d'action - également mis en œuvre quelque part sur Internet. Il permettra la décoration de vos méthodes d'action afin qu'ils soient en mesure de retourner l'affichage HTML, XML ou JSON si c'est ce que vous pourriez avoir besoin aussi.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top