1

ajax-reader/JSON の URL に苦労しています。私はそれを理解していると思うたびに、私は理解していないようです. 誰かこの背後にあるロジックを説明できますか???

私はこのコントローラーを手に入れました:

 public class ServiceController : DnnApiController
    {
        [AllowAnonymous]
        [HttpGet]
        public HttpResponseMessage GetAllItems(int moduleId)
        {
            MyProjectController controller = new MyProjectController();
            IEnumerable<ItemInfo> items = controller.GetAllItems(moduleId);
            return Request.CreateResponse(HttpStatusCode.OK, items);
        }
    }

私はこのRoutemapperを手に入れました:

public class RouteMapper : IServiceRouteMapper
    {
        public void RegisterRoutes(IMapRoute mapRouteManager)
        {
            mapRouteManager.MapHttpRoute("MyProject",
                                         "default",
                                         "{controller}/{action}",
                                         new[] { "MyCompany.MyProject.Services" });
        }
    }

$.ajax() を使用してデータを読み取ることができる URL と、ブラウザでデータを表示している URL を教えてください。

事前にサンクス!

アスレ:)

4

2 に答える 2

2

これが私のやり方です(注:これはDNN6.2以降でのみ機能します)。

  1. View.ascx.cs に追加

    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);
        ServicesFramework.Instance.RequestAjaxScriptSupport();
        ServicesFramework.Instance.RequestAjaxAntiForgerySupport();
        jQuery.RequestDnnPluginsRegistration();
    }
    

    これにより、jquery と必要な DNN ajax プラグインが確実に追加されます。

  2. View.ascx のサービス フレームワーク jquery プラグインを、javascript スクリプト タグ内で次のように開始します (SO では、それらを含めることはできません)。

var modId = <%=ModuleId %>;    
var sf = $.ServicesFramework(modId);
  1. 別の JavaScript ファイルまたは view.ascx コントロールに ajax 関数を追加します。
function getAllItems(){
  $.ajax({
  type:"GET",
  url:sf.getServiceRoot("MyProject")+"Service/GetAllItems",
  beforeSend:sf.setModuleHeaders,
  data:{moduleId:modId},
  cache:false
  }).done(function(data){
    alert("Success!");
  }).fail(function(){
    alert("Crashed!");
  }).always(function(){
    //something you want done whether passed or failed
    //like hide progress bar, ajax spinner etc.
  });
}

DNN jquery プラグインは、次のような URL を作成します (注: 142 は説明のためのものであり、実際のモジュール ID に置き換えられます)。

/DesktopModules/MyProject/API/Service/GetAllItems?moduleId=142

于 2013-08-29T03:16:52.557 に答える
0

URLは次のようになります

/desktopmodules/SlidePresentation/API/SlidePresetnation.ashx/ListOfSlides

に例があります

https://slidepresentation.codeplex.com/SourceControl/latest

しかし、それらは DNN6 用でした。DNN 7 の API の変更により、いくつかの更新が必要になる場合があります。

https://dnnsimplearticle.codeplex.com/SourceControl/latest#cs/services/で、サービス層を持つ DNN7 モジュールを確認できます。

于 2013-08-28T16:16:51.710 に答える