나는, 덕분에 작업을 얻었다. 위 링크의 접근 방식이 효과적입니다. 클래스 라이브러리를 사용하고 빌드 대상을 DNN의 기본 bin 폴더로 지정했습니다. 첫 번째 예제에서 제안 된 URL 구조를 사용하여 두 가지 방법으로 디버깅 한 다음 DNN에 모듈을 추가하고 jQuery .ajax 호출을 사용하여 웹 API 메서드에 액세스했습니다. Newtonsoft.Json을 사용하여 DnnContent 개체를 json으로 변환했습니다. 여기
다음은 DnnApiController 클래스를
using System.Net;
using System.Net.Http;
using System.Web.Http;
using DotNetNuke.Web.Api;
using Newtonsoft.Json;
namespace DnnModule
{
public class DnnContentController : DnnApiController
{
private IDnnContentRepository _dbRepository;
public DnnContentController()
{
_dbRepository = new DnnContentRepository();
}
[AllowAnonymous]
[HttpGet]
public HttpResponseMessage GetContent(int id)
{
if (id != 0)
{
var dnnContent = new DnnContent
{
Content = _dbRepository.GetContent(id),
Title = _dbRepository.GetTitle(id)
};
return Request.CreateResponse(HttpStatusCode.OK, JsonConvert.SerializeObject(dnnContent));
}
return Request.CreateResponse(HttpStatusCode.BadRequest, JsonConvert.SerializeObject(string.Empty));
}
}
}
public class DnnContent
{
public string Content { get; set; }
public string Title { get; set; }
}
인 I가없는 반응을 얻고에 문제가했던 DNN 모듈 사용자 제어
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="DnnContentViewer.ascx.cs" Inherits="DnnModule.DnnContentViewer" %>
<h2>IngenMobile DNN Content Viewer</h2>
<script type="text/javascript">
$(document).ready(function() {
$("#getDnn").click(function() {
var id = $("#id").val();
GetDnnContent(id);
});
});
function GetDnnContent(moduleId) {
jQuery.support.cors = true;
$.ajax({
url: 'DesktopModules/DnnModule/api/DnnContent/GetContent?id=' + id,
type: 'GET',
dataType: 'json',
success: function (data) {
var obj = $.parseJSON(data);
$('#result').html("Title: " + obj.Title + "</br>" + "Content: " + htmlDecode(obj.Content));
},
error: function (request, status, error) {
$('#result').html('Error: ' + request.statusText);
}
});
}
function htmlDecode(value) {
if (value) {
return $('<div />').html(value).text();
} else {
return '';
}
}
</script>
Enter id: <input type="text" id="id" value="" />
<input id="getDnn" type="button" value="Submit" />
<hr/>
<div id="result"></div>
의 UI 코드입니다. 문제는 모듈 이름을 '.' 그 안에. 내가 '.' 모듈 이름에서 작동했습니다.
GetPublicRoles 메서드를 탐색 할 때 어떤 오류가 발생합니까? 클래스를 DotNetNuke 설치 내의 (bin) 폴더에 추가해야합니다. –