简体   繁体   English

JSON Call from view to controller and show JSON object data in view in ASP.NET Core 6 MVC

[英]JSON Call from view to controller and show JSON object data in view in ASP.NET Core 6 MVC

I have written code in an ASP.NET Core 6 controller and calling this from view.我在 ASP.NET Core 6 controller 中编写了代码并从视图中调用它。 This code gives response to my view but I don't know how to parse the data in view.此代码对我的视图做出响应,但我不知道如何解析视图中的数据。

Previously I was using JsonrequestBehaviour.Allowget which is now deprecated in .NET 6. Please help me for better appraoch of json call which can return any dynamic object.以前我使用的是JsonrequestBehaviour.Allowget ,它现在在 .NET 6 中已弃用。请帮助我更好地执行 json 调用,它可以返回任何动态 ZA8CFDE6331BD59EB2AC96F8911C4B666

Here is my controller code:这是我的 controller 代码:

public IActionResult GetAccountLevelAndCode(Int32 GroupAccountID, Int32 Companyid)
{
    string AccountLevels = ""; string Returnerror; string ReturnBranches;
    DataTable AL = new GetDataClass().GetAccountNoAndAndLevels(GroupAccountID, Companyid, out Returnerror);
    //a = (GLChartOFAccountModel)AL.Rows[0].ConvertDataRowToObject(a);
    string Sql = @"select cab.BranchID from GLChartOFAccount ca inner join GLChartOfAccountBranchDetail cab on ca.GLCAID=cab.GLCAID where cab.GLCAID=" + GroupAccountID;

    DataTable dt = new DataTable();
    dt = StaticClass.SelectAll(Sql).Tables[0];

    AccountLevels = JsonConvert.SerializeObject(AL);
    ReturnBranches = JsonConvert.SerializeObject(dt);

    Returnerror = JsonConvert.SerializeObject(Returnerror);

    return Json(new { AccountLevels, ReturnBranches, Returnerror });
}

Following is my view call and response allocation:以下是我的视图调用和响应分配:

 function GetAccountNoandLevel() {
    var DATA={"GroupAccountID" : $('#isParent').val(), Companyid : @Model.CompanyID }
    var execCode = true;
    $.ajax({
        async: false,
        type: "POST",
        url: "/GLChartOFAccount/GetAccountLevelAndCode",
        data: DATA,
        dataType: "json",
        success: function (data) {
            try {
                var c = JSON.parse(data.AccountLevels)
                var b = JSON.parse(data.ReturnBranches)
                var er = JSON.parse(data.Returnerror)

                if (b.length>0) {

                    $("#BrachIDs option").each(function () {
                        var idParent = $(this).parent().attr("id");
                        this.disabled = true;
                    });
                    var dataarray = '';
                    for (var i = 0; i < b.length; i++) {
                        dataarray += b[i]["BranchID"] + ',';
                    }
                    dataarray = dataarray.replace(/,\s*$/, "");
                    var data = dataarray.split(",");
                    $("#BrachIDs").val(data);
                    $("#BrachIDs").change();
                    if (data.length > 0) {
                        for (var i = 0; i < data.length; i++) {
                            $("#BrachIDs option").filter("[value='" + data[i] + "']").attr('disabled', false);
                        }
                    }
                }
                else {
                    $("#BrachIDs option").each(function () {
                        var idParent = $(this).parent().attr("id");
                        this.disabled = false;
                    });
                    $("#BrachIDs option:selected").removeAttr("selected");
                }

                if (ShowErrorOK(er)) {
                    $('#GLCode').val('');
                }else{
                    RowToFillValues(c)
                }

            } catch (e) {
                //console.log(e + " GetAccountNoandLevel "); document.getElementById("DisplayErrorMessage").innerText = e.message; $('#btnTriggerMessage').click(); execCode = false; return false;
                console.log(e + " GetAccountNoandLevel "); console.log(e.message)
            }
        },
        error: function (err) {
            //console.log(err.responseText); document.getElementById("DisplayErrorMessage").innerText = "AJAX error in request: " + JSON.stringify(err.statusText + " " + err.status) + " GetAccountNoandLevel::Unable To Get Details"; $('#btnTriggerMessage').click(); execCode = false; return false;
            console.log("AJAX error in request: " + JSON.stringify(err.statusText + " " + err.status) + " GetAccountNoandLevel::Unable To Get Details")
        }
    });

    if (execCode) {
        
    }
}

The response data is showing undefined ...响应数据显示undefined ...

you don't need serialize and parse manually, it will be done automaticaly您不需要手动序列化和解析,它将自动完成

return new JsonResult(new { AccountLevels=AL, ReturnBranches=dt, Returnerror= Returnerror });

and ajax和 ajax

var c = data.AccountLevels;
var b = data.ReturnBranches;
var er = data.Returnerror;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM