我的应用程序使用 JavaScript 中的 AJAX 调用(使用 $.get
、$.post
等)对 Action 方法进行许多调用
我现在正在尝试清理我的 javascript 文件,唯一阻止我从页面中完全删除内联脚本的是需要让我的操作方法路由在页面中呈现,以便我可以将它们设置为我的正确变量JavaScript。
示例类似于
url = '@Url.Action("SomeMethod","SomeController",new{area="SomeArea"})'
我想做的是在 global.asax
中运行一个方法来生成我需要的路由(我手动编程它们没有问题),然后根据fileapp.js
——其中包括所有生成的硬编码 URL——并在需要时更改 url。
这样我就可以将所有 url 放在全局对象中,而不必使用内联脚本来渲染 url。这可能吗?
最佳答案
因此,经过更多研究后,我找到了适合我想要的解决方案:
- 创建
ActionResult
返回一个局部 View 的方法,基本上是app.js
排队。- 或者直接在 Controller 方法中编写javascript并返回
JavasScriptResult
, as shown here ——尽管这是不受欢迎的。
- 或者直接在 Controller 方法中编写javascript并返回
- 创建
ActionFilterAttribute
为上述方法设置缓存,per these instructions . - 包括
<script>
标签<head>
其源代码指向 javascript actionresult 方法。
最终结果:
public JavaScriptResult GetApp()
{
return PartialView("App.js.cshtml");
}
将缓存属性设置为每 24 小时(或其他)一次,以便我对 Controller 的调用仅被命中一次。现在我可以确保更改后的网址传播到客户端,而无需使用内联渲染。
关于javascript - 在应用程序启动时生成路由 URL 列表并插入到 MVC 中的 javascript 文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18969114/