【问题标题】:Generate list of route URLs on application start and insert into javascript file in MVC在应用程序启动时生成路由 URL 列表并插入到 MVC 中的 javascript 文件中
【发布时间】:2013-09-23 21:21:29
【问题描述】:

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

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

例如

url = '@Url.Action("SomeMethod","SomeController",new{area="SomeArea"})'

我想做的是在global.asax 中运行一个方法来生成我需要的路由(我手动编程它们没有问题),然后根据文件检查它们app.js--包括所有生成的 url 硬编码 -- 并在必要时更改 url。

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

【问题讨论】:

    标签: javascript ajax asp.net-mvc razor global-variables


    【解决方案1】:

    所以在进行更多研究后,我发现了一个适合我想要的解决方案:

    1. 创建一个ActionResult 方法,该方法返回一个基本上是app.js 内联的局部视图。
      • 或者直接在控制器方法中编写 javascript 并返回 JavasScriptResultas shown here ——尽管这是不受欢迎的。
    2. 创建一个ActionFilterAttribute,为上述方法per these instructions设置缓存。
    3. <head> 中包含<script> 标记,其源指向javascript actionresult 方法。

    所以最终结果:

    public JavaScriptResult GetApp()
    {
     return PartialView("App.js.cshtml");
    }
    

    将缓存属性设置为每 24 小时(或其他)一次,这样我对控制器的调用只会被命中一次。现在,我可以确保将更改的 url 传播到客户端,而无需使用内联渲染。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多