gpt4 book ai didi

asp.net-mvc - Asp.Net MVC2 RenderAction 更改页面 mime 类型?

转载 作者:行者123 更新时间:2023-12-03 23:22:30 30 4
gpt4 key购买 nike

看来调用 Html.RenderAction在 Asp.Net MVC2 中,如果子操作的类型不同于父操作的类型,则应用程序可以更改页面的 mime 类型。

下面的代码(在 MVC2 RTM 中测试)对我来说似乎是明智的,它将返回类型为 application/json 的结果。调用Home/Index时.浏览器不会显示页面,而是会弹出并询问您是否要下载它。

我的问题:我错过了什么吗?这是一个错误吗?如果是这样,最好的解决方法是什么?

Controller :

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);
}
}

看法:
<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>

最佳答案

我认为这是一个错误。如果这是正在呈现的子操作,为什么它会更改父操作响应?
Html.Action 也是如此,它将其呈现为字符串。我的解决方法是:

Html.ViewContext.HttpContext.Response.ContentType = "text/html";

在调用 Html.Action 之后。我想有人可以编写一个包装器 Html Helper 扩展,例如:
var aux = Html.ViewContext.HttpContext.Response.ContentType;
Html.Action(....); // or Html.RenderAction(...)
Html.ViewContext.HttpContext.Response.ContentType = aux;

关于asp.net-mvc - Asp.Net MVC2 RenderAction 更改页面 mime 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2448239/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com