【发布时间】:2011-12-13 10:24:24
【问题描述】:
在 JavaScript 中避免硬编码 URL 的最佳方法是什么(主要用于进行 AJAX 调用时)?
过去:
- 呈现结果为
@Url.Action或@Url.RouteUrl的JavaScript 变量 - 将
@Url.Action或@Url.RouteUrl的结果传递给init/ctor 中的JavaScript。
有没有更好的办法?
这样做会很好:
var url = $.routes("actionName", "controllerName") // or "routeName" for named routes
$.post(url, { id = 1 }, function() { //.. });
这当然是不可能的(JavaScript 无法直接访问 ViewContext,因此无法访问路由表)。
但我想知道是否有一种方法可以为 JavaScript 设置我自己的“路由表”,只有我知道它需要的那些? (例如我在视图中设置)
人们如何处理这个问题?
【问题讨论】:
-
制作一个 javascript routeFactory 对象?创建一个您提供 url 的对象,然后执行“routeFactory.GetRoute('Default');”之类的操作或“routeFactory.GetRoute('Home', 'About');”什么样的?
标签: javascript asp.net-mvc asp.net-mvc-3 razor asp.net-mvc-routing