在应用程序启动时生成路由URL列表并插入MVC中的javascript文件

在应用程序启动时生成路由URL列表并插入MVC中的javascript文件,javascript,ajax,asp.net-mvc,razor,global-variables,Javascript,Ajax,Asp.net Mvc,Razor,Global Variables,我的应用程序使用javascript中的AJAX调用(使用$.get,$.post等)对动作方法进行了许多调用 我现在正试图清理我的javascript文件,唯一阻止我从页面中完全删除内联脚本的是需要在页面中呈现我的操作方法路由,以便我可以将它们设置为javascript的正确变量 例如 url = '@Url.Action("SomeMethod","SomeController",new{area="SomeArea"})' 我想做的是在global.asax中运行一个方法,该方法生成我需

我的应用程序使用javascript中的AJAX调用(使用
$.get
$.post
等)对动作方法进行了许多调用

我现在正试图清理我的javascript文件,唯一阻止我从页面中完全删除内联脚本的是需要在页面中呈现我的操作方法路由,以便我可以将它们设置为javascript的正确变量

例如

url = '@Url.Action("SomeMethod","SomeController",new{area="SomeArea"})'
我想做的是在
global.asax
中运行一个方法,该方法生成我需要的路由(我手工编程它们没有问题),然后将它们与一个文件
app.js
(其中包括所有生成的硬编码url)进行检查,如果需要,则更改url


这样,我就可以在全局对象中包含所有URL,而不必使用内联脚本来呈现URL。这可能吗?

因此,在做了更多的研究之后,我找到了一个适合我需要的解决方案:

  • 创建一个
    ActionResult
    方法,该方法返回基本上是
    app.js
    内联的部分视图。
    • 或者直接在controller方法中编写javascript并返回
      JavasScriptResult
      ,尽管这是不赞成的
  • 创建为上述方法设置缓存的
    ActionFilterAttribute
  • 中包含一个
    标记,其源指向javascript actionresult方法
  • 因此,最终结果是:

    public JavaScriptResult GetApp()
    {
     return PartialView("App.js.cshtml");
    }
    
    将缓存属性设置为每24小时一次(或任何情况),以便我对控制器的调用只命中一次。现在,我可以确保将更改的URL传播到客户端,而无需使用内联呈现