我的DNN MVC开发过程中出现了另一个问题。我想知道这是否是我犯了一个错误的错误/缺失功能。
我将尝试在下面解释问题。

我想实现的目标

我想通过调用AJAX帖子在控制器中执行操作。到目前为止,它仍然有效。
但是,当我尝试将一些变量返回到View时,它不仅返回变量。它将整个HTML源添加到响应中。

JSON REPONSE

我的控制器

我的方法返回一个ActionResult(我尝试了JsonResult和其他东西:HttpResponseMessage)。
该程序本身正在运行,并且确实返回JSON消息。

public ActionResult Mark(int itemId)
{
    var item = _itemService.GetItem(itemId, ModuleContext.ModuleId);

    // Check if item exists
    if (item == null)
        return Json(new { success = false, Description = "the item you want to vote for does not exist (anymore)" }, JsonRequestBehavior.AllowGet);

    // Check if user is voting on his own item
    if (item.CreatedByUserId == User.UserID)
        return Json(new { success = false, Description = "it is not allowed to vote for your own item" },  JsonRequestBehavior.AllowGet);


我的看法

下面的视图不是我的最终视图,而是要进行测试。

$("#button").click(function () {
    $.ajax({
     type: "POST",
        url: "@Url.Action("Mark", "Vote")",
        dataType: "json",
        data: { itemId: JSON.stringify(16) },
        success: function (data) { console.log(data); },
        error: function (errMsg) {
            responseText = jQuery.parseJSON(errMsg.responseText);
            console.log(responseText.Description);
        }
    });
});


这是错误还是我可以解决的问题?非常感谢您的宝贵时间。
https://dnntracker.atlassian.net/browse/DNN-8522

最佳答案

根据DNN在Unsupported MVC Features上的文档,当前不支持除ActionResult以外的任何结果。

我能够在我的MVC控制器方法之一中返回JsonResult,它将返回JSON响应,但是正如您提到的,附加到它的是View HTML。我的解决方案是解析响应以从中获取json字符串。

...
success: function (response) {
    var dnnViewResp = response.xhr.responseText;
    dnnViewResp = dnnViewResp.substring(0, dnnViewResp.indexOf("<!DOCTYPE html>"));
    var data = JSON.parse(dnnViewResp);
}


但是实际上,您需要为这些类型的服务创建WebAPI服务或处理程序,直到DNN添加对其他ActionResult类型的支持。

关于jquery - 通过AJAX请求DNN MVC执行操作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36038866/

10-11 13:21