インターネット テンプレートを使用して作成された 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=""$(PROGRAMFILES)\Microsoft SDKs\TypeScript\0.8.0.0\tsc" -out scripts\app.js scripts\app.ts -target ES5 @(TypeScriptCompile ->'"%(fullpath)"', ' ')" IgnoreExitCode="true" />
<Exec Command=""$(PROGRAMFILES)\Microsoft SDKs\TypeScript\0.8.0.0\tsc" -out scripts\mobileapp.js scripts\mobileapp.ts -target ES5 @(TypeScriptCompile ->'"%(fullpath)"', ' ')" 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)
何か案は?