4

私はコントローラーを持っていValidationControllerて、それにはと呼ばれるメソッドがありますEmailExist

ajax呼び出しがあります

$.ajax({    
  type: "POST",    
  url: "/Validation/EmailExist",    
  data: { 'Email': $('#Email').val() },    
  success: function (result) {    
    if (result == true) {    
      alert("true");  
    } else {   
      alert("false");  
    }    
  },  
  error: function (error) {  
    alert(error.responseText);  
  }  

404 エラーが発生しましたが、その理由がわかりません。これをデバッグする方法に関する提案や提案はありますか?

4

1 に答える 1

3

URL をハードコーディングしました:

url: "/Validation/EmailExist"

それは非常に悪いです。URL を扱うときは、常に URL ヘルパーを使用する必要があります。

url: "@Url.Action("EmailExist", "Validation")"

これが悪い理由は、URL をハードコーディングしたため、ルート構成に依存しなくなったためです。Global.asax でルートを変更すると、コードが壊れます。考慮すべき仮想ディレクトリ名が存在するため、IIS にアプリケーションを展開するときにもコードが壊れます。/Validation/EmailExistしたがって、正しい URLはもはや/MyAppName/Validation/EmailExist. これらすべてがヘルパーによって考慮されるため、常にヘルパーを使用する必要があります。

もちろん、これがサーバー側コードにアクセスできない別の JavaScript ファイルにある場合は、DOM 内で HTML5 data-* 属性を使用して正しい URL を配置するか、フォーム アクションなどの既存の要素を直接使用することができます。アンカーhref。

于 2012-05-15T15:16:01.400 に答える