Dot Net Nuke Ajax响应返回HTML

时间:2013-08-29 19:41:30

标签: ajax dotnetnuke

我似乎无法从Dot Net Nuke网站的Ajax帖子中获得JSON响应。它返回HTML作为响应。

我能够让这个在普通的测试网站上工作得很好,我想知道是否有人知道我需要做什么。

以下是我正在测试的代码:

JavaScript的:

$("#ClearTaxFormButton").click(function (e) {
        e.preventDefault();
        var testValue = 7;

        $.ajax({
            type: "GET",
            url: "localhost/mywebsite/tabid/100/Default.aspx/SumbitByAjaxTest",
            data: '{ "taxRate":' + testValue + '}',
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (msg) {
                // Replace the div's content with the page method's return.
                //$("#Result").text(msg.d);
                alert(msg.d);
            }
        });
    });

C#功能:

//just using ths for testing
[WebMethod]
public static string SumbitByAjaxTest(string taxRate)
{
    return taxRate;
}

就像我说的,这个确切的代码(除了不同的URL)在普通的.NET站点中运行良好,但当我将其移动到Dot Net Nuke站点时,它返回HTML。

任何想法??

1 个答案:

答案 0 :(得分:1)

DNN的服务层允许您遵循类似Webapi的方法,我认为您会发现更容易控制数据往返。

以下是开源文章模块的控制器示例 https://dnnsimplearticle.codeplex.com/SourceControl/latest#cs/services/DnnSimpleArticleController.cs

这样的东西
public HttpResponseMessage GetAllArticles(int portalId, bool sortAsc)
        {
            try
            {
                //todo: get the latest X articles?
                var articles = ArticleController.GetAllArticles(portalId, sortAsc);

                //because of the circular reference when cerealizing the taxonomy within content items we have to build out our article view models manually.
                var cleanArticles = new List<ArticleViewModel>();
                foreach (Article a in articles)
                {
                    var newArt = new ArticleViewModel
                    {
                        ArticleId = a.ArticleId,
                        Body = WebUtility.HtmlDecode(a.Body),
                        CreatedByUser = a.CreatedByUser,
                        CreatedByUserId = a.CreatedByUserId,
                        CreatedOnDate = a.CreatedOnDate,
                        Description = WebUtility.HtmlDecode(a.Description),
                        LastModifiedByUser = a.LastUpdatedByUser,
                        LastModifiedByUserId = a.LastModifiedByUserId,
                        LastModifiedOnDate = a.LastModifiedOnDate,
                        ModuleId = a.ModuleId,
                        Title = a.Title,
                        url = DotNetNuke.Common.Globals.NavigateURL(a.TabID, "", "&aid=" + a.ArticleId)
                    };
                    cleanArticles.Add(newArt);
                }

                var articleViewModels = new ArticleViewModels
                {
                    Articles = cleanArticles
                };

                return Request.CreateResponse(HttpStatusCode.OK, articles);

            }
            catch (Exception exc)
            {
                DnnLog.Error(exc); //todo: obsolete
                return Request.CreateResponse(HttpStatusCode.BadRequest, "error in request"); //todo: probably should localize that?
            }
        }