asp.net-mvc – asp.net mvc使用.wml保持覆盖text/html内容类型

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – asp.net mvc使用.wml保持覆盖text/html内容类型前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在开发一个可在移动(手机)设备上观看的网站.我只是使用纯HTML 4.01,没什么特别的.除诺基亚Series 40第1-5版外,我们测试过的所有移动浏览器都能正常显示这些页面.仔细观察,似乎IIS会自动使用text / vnd.wap.wml的内容类型而不是text / html呈现html.由于我们没有使用WAP,因此页面失败并显示错误.

我正在使用ASP.Net MVC 1.0,所以我添加了一个ActionFilterAttribute来覆盖内容类型.此代码运行但仍在客户端以vnd.wap.wml的形式出现.
我正在使用这个doctype;

<?xml version =“1.0”encoding =“UTF-8”?>
<!DOCTYPE html PUBLIC“ - // W3C // DTD HTML 4.01 Transitional // EN”“http://www.w3.org/TR/html4/loose.dtd\"\u0026gt; 值得注意的是,vnd.wap.wml是移动浏览器指定的第一个Accept-Encoding,因此我假设IIS7正在为此提供服务.我想因为MVC并没有特别提到.html(或.aspx)文件,可能会跳过mime类型?我怀疑这可能是一个IIS修复而不是代码修复. 任何帮助深表感谢!

解决方法

事实证明我没有正确实现ActionFilter ..除了OnActionExecuted方法之外,我还需要覆盖OnResultExecuted方法.完整属性如下所示(只需在需要时将[HtmlOverrideFilter]添加到控制器中).希望这有助于某人.
internal class HtmlOverrideFilter : ActionFilterAttribute
{
    public override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        filterContext.HttpContext.Response.ContentType = "text/html";
    } 

    public override void OnResultExecuted(ResultExecutedContext filterContext)
    {
        filterContext.HttpContext.Response.ContentType = "text/html";
    }
}
原文链接:https://www.f2er.com/aspnet/251734.html

猜你在找的asp.Net相关文章