asp.net MVCは.wmlでオーバーライドtext / htmlのコンテンツ・タイプを保持します

StackOverflow https://stackoverflow.com/questions/1176947

  •  19-09-2019
  •  | 
  •  

質問

私は、モバイル(携帯電話)デバイス上で閲覧するウェブサイトを開発しています。私は単なるHTML 4.01、全く何も特別なを使用しています。ページには、我々は、ノキアシリーズ40 1-5th版を除いて、テストしたすべてのモバイルブラウザで罰金レンダリングします。精密検査で、IISが自動的に代わりtext/vnd.wap.wmltext/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">

これはvnd.wap.wmlは、携帯電話のブラウザで指定された最初のAccept-Encodingであることは注目に値しますので、私はIIS7は、その理由のためにそれを提供していると仮定します。そして、MVCは、具体的.htmlファイル(または.aspxの)を参照してくださいしないように私は推測、おそらくMIMEタイプがスキップされていますか?私は、これはおそらく、IISの修正ではなく、コードの修正である疑います。

すべてのヘルプははるかに高く評価される!

役に立ちましたか?

解決

私はOnActionExecuted方法に加えて、OnResultExecutedメソッドをオーバーライドするために必要な..私は正しくのActionFilterを実施していなかったが判明します。完全な属性は、(必要な場合にだけ、あなたのコントローラに[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";
    }
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top