J'ai un projet Microsoft MVC avec une action "Foo" dont la vue ("Foo.aspx") contient les lignes:Html.ActionLink() me donne un lien vide quand je l'utilise dans Html.RenderAction()
<%= 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 celui-ci:
<% Html.RenderAction<MyController>(x => x.Foo()); %>
Ensuite, les liens sont rendus sans cibles. Pourquoi cela se produirait-il, et comment je contournerais ce problème?
Est-il logique d'avoir des actions AJAX qui retournent des vues de contrôle utilisateur? Mon projet comporte des actions qui devraient être directement accessibles par HTTP, mais je souhaite également que l'accès se fasse à partir des autres pages. Par exemple, disons que j'ai un appel AJAX pour mettre à jour dynamiquement une partie d'une page, mais quand cette page est rendue, je veux incorporer cette partie de la page sans appeler l'action, car l'action de la page a déjà calculé toutes les valeurs L'action AJAX devrait être calculée. La page peut simplement remplir les variables dans le partiel. Est-ce une chose sensée à faire? –
J'ai basculé mon fichier .aspx vers un fichier .ascx, et le même problème persiste. <% = Html.ActionLink ("mylinktext1", "bar")%> affiche un lien avec href = "". –
Aha. En utilisant <% Html.RenderAction (x => x.Foo()); %> provoque le problème. En utilisant <% Html.RenderAction ("Foo", "MyController"); %> fonctionne bien. Pourquoi la version typée échouerait-elle et la version magic-strings fonctionnerait-elle? –