1

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

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

示例类似于

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

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

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

4

1 回答 1

0

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

  1. 创建一个ActionResult返回基本上是app.js内联的局部视图的方法。
    • 或者直接在控制器方法中编写 javascript 并 return JavasScriptResult如此处所示- 尽管这是不受欢迎的。
  2. 根据这些说明ActionFilterAttribute,为上述方法创建一个设置缓存。
  3. <script><head>其源指向 javascript actionresult 方法的标记中包含一个标记。

所以最终结果:

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

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

于 2013-09-24T13:56:42.850 回答