我有一个使用 Internet 模板创建的 ASP.NET MVC4 应用程序。在这个项目中,我在 Views/Shared 文件夹中有两个布局文件,_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)
有任何想法吗?