2016-06-23 6 views
0

こんにちは、私はControlで自分の関数を呼び出すビルドajaxを持っています。 オーチャードのこのプロジェクト(それは新しい)は私が知っているようにmvcのようです。コントローラのURL /パスで自分の関数が見つかりません。mvc

私は関数のurl/pathに問題があります。

私は

私は'@Url.Actionに最初の値が私の関数名であることを知っている、とsecontは(コントローラ、それを自己のない)私のコントローラ名

ですが、動作しないurl: '@Url.Action("GetFilesList", "FileUpload")'を使用している場合でそのような直接URLは、それが働いている機能するに

'http://localhost:30321/OrchardLocal/VnModule.Module/FileUpload/GetFilesList' 

この私のコード: 仕事:

$.ajax({ 
     url: 'http://localhost:30321/OrchardLocal/VnModule.Module/FileUpload/GetFilesList', 
     type: 'POST', 

     data: { 
      sNum: "123", 
      __RequestVerificationToken: token 
     }, 

     success: function() { 
     }, 
     error: function() { 

     } 
    }); 

そして、これが動作していません。

$.ajax({ 
     url:'@Url.Action("GetFilesList", "FileUpload")', 
     type: 'POST', 

     data: { 
      sNum: "123", 
      __RequestVerificationToken: token 
     }, 

     success: function() { 
     }, 
     error: function (xhr) { 

     } 
    }); 

マイコントローラ:

namespace VnModule.Module.Controllers 
{ 
    public class FileUploadController : Controller 
    { 
    [HttpPost] 
     [ValidateAntiForgeryToken] 
     [ActionName("GetFilesList")] 
     public void GetFilesList(string sNum) 
     { 
      int myNumber = Int32.Parse(sNum); 
     } 

    } 

} 

ソウ私は確信している問題がurl: '@Url.Action("GetFilesList", "FileUpload")'であるが、私は私が間違っているのかを理解カント。

ご意見はありますか?

+0

それをしない:

<input type="submit" value="Savee" id="btn_UploadImg" onclick="btn_Upload_Click(this)" data-urlaction="@Url.Action("GetFilesList", "FileUpload", new { area = "VnModule.Module" })" /> 

と外部jsファイルでこのURLアクションパスを取得するには、あなたがこれを好きなことができますファイル外部のjsファイルですか? – Berkay

+0

これはjsファイルがスクリプトフォルダにあり、制御フォルダ –

+3

のcomtrollerです.Url.Actionはrazor htmlヘルパーであり、外部jsファイルでは機能しません。 'url: '/ FileUpload/GetFilesList''は大丈夫です。 – Berkay

答えて

0

外部のjsファイルでurl(Url.Action razor)を見る方法を見つけました。

私はこのように私のボタンにこのパスでデータ-IDを追加しました:

var funcUrl = $("#btn_UploadImg").data("urlaction"); 



$.ajax({ 
     url: funcUrl, 

     type: 'POST', 

     data: { 
      sNum: "123", 
      __RequestVerificationToken: token 
     }, 

     success: function() { 
     }, 
     error: function (xhr) { 
      alert("Error:"+xhr.responseText); 
      console.log(xhr.responseText); 
      console.info(xhr); 
     } 
    }); 
3

Orchard Documentation link about module

オーチャードCMS内のすべてのモジュールは、ASP.NET MVCプロジェクトの領域です。したがって、あなたのコードにarea属性を追加する必要があります:

url: '@Url.Action("GetFilesList", "FileUpload", new{area = "module name here"})' 

この方法で問題を解決する必要があります。

+0

申し訳ありません..VnModule.ModuleとVnModuleとVnを試してみた –

+0

このコードはあなたのためにはうまくいくはずですが、問題をデバッグするにはここに出力HTMLを貼り付けることができます(ブラウザのページソースから取得できます) – mdameer

0

ネットワークパネルでURLを確認して、どのURLがajaxリクエストで呼び出されているかを確認します。解決策を見つけるために多くの助けとなります。また、果樹園を通過する必要がある場合は@Url.Actionに変更してください。

関連する問題