我有以下 JScript 代码:var apiUrl = "/api/myService/myMethod/
没有这样的代码。永远不要在 ASP.NET MVC 应用程序中对 url 进行硬编码。在处理 url 时,您应该始终使用帮助程序。因此,例如,您可以在布局中的全局变量中使用它:
<script type="text/javascript">
var apiUrl = '@Url.Route("DefaultApi", new { controller = "values", httproute = "" });';
</script>
毫无疑问,您会注意到httproute = ""
我用来指示 URL 助手使用 Web API 路由而不是您的 MVC 路由(这是两个完全不同的东西)的路由参数。
但在大多数情况下,您甚至不需要它。您传递给此$.getJSON
函数的 url 可能是您的 DOM 的一部分。例如,你永远不会$.getJSON
像在野外那样调用这个函数。您通常调用它来不显眼地 AJAXify 锚点或表单。所以 url 可能已经是 DOM 的一部分。例如,假设您想要 AJAXify 锚点。太好了,继续写这个锚点来指向正确的 url:
@Html.RouteLink(
"click me",
"DefaultApi",
new { httproute = "", controller = "values", id = "123" },
new { id = "mylink" }
)
酷,现在 AJAXify 吧:
$(function() {
$('#mylink').click(function() {
$.getJSON(this.href, function(result) {
alert('success');
});
return false;
});
});
看看您如何不再需要在您的 javascript 中对任何 url 进行硬编码?您只需使用 javascript 不显眼地增强 DOM 中已经存在的内容。这是由适当的 url 助手生成的,可确保根据您的路由定义创建正确的 url。通过这种方式,您可以在一个地方(无论您在哪里配置您的路线)更改您的路线模式,并且您无需担心您的视图。