1

インターネット テンプレートを使用して作成された ASP.NET MVC4 アプリケーションがあります。このプロジェクトでは、Views/Shared フォルダーに 2 つのレイアウト ファイル、_Layout.chsmtl と _Layout.Mobile.cshtml があります。これらの各ファイルには、TypeScript からコンパイルされたさまざまなスクリプトをロードしています。_Layout.cshtml には

<script src="@Url.Content("~/Scripts/app.js?43")" type="text/javascript"></script>

そして _Layout.Mobile.cshtml では、

<script src="@Url.Content("~/Scripts/MobileApp.js?2")" type="text/javascript"></script>

app.js と mobileapp.js は、プロジェクト ファイルの次の設定に基づいて作成されます。

 <Target Name="BeforeBuild">
    <Exec Command="&quot;$(PROGRAMFILES)\Microsoft SDKs\TypeScript\0.8.0.0\tsc&quot; -out scripts\app.js scripts\app.ts -target ES5 @(TypeScriptCompile ->'&quot;%(fullpath)&quot;', ' ')" IgnoreExitCode="true" /> 
    <Exec Command="&quot;$(PROGRAMFILES)\Microsoft SDKs\TypeScript\0.8.0.0\tsc&quot; -out scripts\mobileapp.js scripts\mobileapp.ts  -target ES5 @(TypeScriptCompile ->'&quot;%(fullpath)&quot;', ' ')" IgnoreExitCode="true" />
  </Target>

アプリケーションは Internet Explorer 9 で正しく動作します。ただし、Opera Mobile で実行すると、アラートを表示するだけのコンストラクターが呼び出されていないため、mobileapp.js がロードされていないように見えます。これは MobileApp.js の TypeScript コードです。

 export class MobileApp extends AppBase {                                  

        constructor () { 
            super(null, null)                
              alert("mobile page loading ...?");
        }      
    }

また、Opera Mobile でインデックス ページを更新するたびに、次のメッセージがアプリケーション ログに書き込まれます。

ERROR 2013-01-24 09:39:57,233 172979ms MvcApplication         Application_Error  - ASP.global_asax
System.Web.HttpException (0x80004005): File does not exist.
   at System.Web.StaticFileHandler.GetFileInfo(String virtualPathWithPathInfo, String physicalPath, HttpResponse response)
   at System.Web.StaticFileHandler.ProcessRequestInternal(HttpContext context, String overrideVirtualPath)
   at System.Web.DefaultHttpHandler.BeginProcessRequest(HttpContext context, AsyncCallback callback, Object state)
   at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

何か案は?

4

1 に答える 1