Il semble que l'appel Html.RenderAction
dans les applications Asp.Net MVC2 peut modifier le type mime de la page si le type de l'action enfant est différent de celui de l'action parent.Asp.Net MVC2 RenderAction modifie le type de page mime?
Le code ci-dessous (test dans MVC2 RTM), qui me semble sensé, retournera un résultat de type application/json
en appelant Home/Index
. Au lieu d'afficher la page, le navigateur affichera et vous demandera si vous voulez le télécharger.
Ma question: Ai-je raté quelque chose? Est-ce un bug? Si oui, quelle est la meilleure solution de contournement?
contrôleur:
public class HomeController : Controller
{
public ActionResult Index()
{
ViewData[ "Message" ] = "Welcome to ASP.NET MVC!";
return View();
}
[ChildActionOnly]
public JsonResult States()
{
string[] states = new[] { "AK", "AL", "AR", "AZ", };
return Json(states, JsonRequestBehavior.AllowGet);
}
}
Vue:
<h2><%= Html.Encode(ViewData["Message"]) %></h2>
<p>
To learn more about ASP.NET MVC visit <a href="http://asp.net/mvc" title="ASP.NET MVC Website">http://asp.net/mvc</a>.
</p>
<script>
var states = <% Html.RenderAction("States"); %>;
</script>
cela fonctionnera ... il ne semble pas qu'une action enfant devrait être capable de changer le ContentType de la page entière. –
Notez que JavaScriptSerializer(). Serialize ne sérialise pas correctement les guillemets intégrés, contrairement à la méthode Json. Vous aurez besoin de quelque chose comme: Func safeForJson = (s) => { return s.NotNull(). Replace ("\" "," \\\ ""); }; –
Désolé, la méthode NotNull est la mienne mais s'assure que la chaîne d'entrée n'est pas nulle (natch). –