2017-07-28 27 views
1

私は、jquery-uiオートコンプリートを供給するために使用されるテキストボックスを定義するHtmlヘルパーを持っています。Url.Actionがコントローラを見つけることができません

@Html.TextBox("txtSearchArg") 

javascriptは/ Scriptsフォルダにあります。私は私にHomeControllerの@ Url.Action方法 を使用しています

$("#txtSearchArg").autocomplete({ 
    source: function (request, response) { 
     var clinician = new Array(); 
     $.ajax({ 
      cache: false, 
      type: "POST", 
      url: '@(Url.Action("Autocomplete", "Home"))' 
      data: { "term": request.term }, 
      success: function (data) { 
       alert("in success"); 
       response(clinician); 
      }, 
      error: function (response) { 
       alert(response.responseText); 
      }, 
      failure: function (response) { 
       alert(response.responseText); 
      } 
     }); 
    } 
}); 

、私はオートコンプリートの方法があります。

[AcceptVerbs(HttpVerbs.Post)] 
    public JsonResult Autocomplete(string term) 
    { 
     ... JSON gets created here 
     return Json(result3, JsonRequestBehavior.AllowGet); 
    } 

私は上記のコードのように私の$アヤックスメソッドにURLパラメータを渡す

、応答が見つかりません、404です。デバッグでは、動的jsは "url: '/ Home/Autocomplete'と表示されます。私は(ダイナミックJSフォームにコピー)のようにそれを渡すときには:

url: '/Home/Autocomplete' 

それだけで罰金にHomeControllerオートコンプリートの方法を見つけました。

HomeControllerメソッドとAutocompleteメソッドを見つけるために、Url.Actionメソッドを使用するにはどうすればよいですか?

+0

追加しましたが[httpPost]? –

答えて

2

javascriptファイルでは、かみそりの構文を使用できません。適切にレンダリングされるように、コードをビューに移動する必要があります。あなたのビュー(例えば.cshtmlファイル)に

可能な解決策は、このようなものかもしれない

<script> 
    var autoCompleteUrl = '@(Url.Action("Autocomplete", "Home"))'; 
</script> 

次に、あなたのjsの中でだけ置き換える:

$("#txtSearchArg").autocomplete({ 
    source: function (request, response) { 
     var clinician = new Array(); 
     $.ajax({ 
      cache: false, 
      type: "POST", 
      url: autoCompleteUrl 
      data: { "term": request.term }, 
      success: function (data) { 
       alert("in success"); 
       response(clinician); 
      }, 
      error: function (response) { 
       alert(response.responseText); 
      }, 
      failure: function (response) { 
       alert(response.responseText); 
      } 
     }); 
    } 
}); 
関連する問題