次の 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 = ""
MVC ルートではなく Web API ルートを使用するように URL ヘルパーに指示するために使用したルート パラメーターに間違いなくお気付きでしょう(これらは 2 つのまったく異なるものです)。
しかし、ほとんどの場合、それは必要ありません。この$.getJSON
関数に渡す URL は、DOM の一部である可能性があります。たとえば、実際にはこの$.getJSON
関数をそのように呼び出すことはありません。通常は、目立たないようにアンカーまたはフォームを AJAX 化するために呼び出します。したがって、URL はすでに DOM の一部である可能性があります。たとえば、アンカーを AJAX 化したいとします。よし、先に進んで、正しい URL を指すようにこのアンカーを書き込んでください。
@Html.RouteLink(
"click me",
"DefaultApi",
new { httproute = "", controller = "values", id = "123" },
new { id = "mylink" }
)
かっこいい、今それをAJAX化してください:
$(function() {
$('#mylink').click(function() {
$.getJSON(this.href, function(result) {
alert('success');
});
return false;
});
});
JavaScript で URL をハードコーディングする必要がなくなったことがわかりますか? JavaScript を使用して、DOM に既に存在するものを目立たないように拡張するだけです。これは、ルート定義を考慮して正しい URL が作成されるようにする適切な URL ヘルパーによって生成されます。このようにして、単一の場所 (ルートを構成する場所) でルートのパターンを変更でき、ビューについて心配する必要はありません。