【问题标题】:How to populate <select> using ajax in asp.net core mvc如何在 asp.net core mvc 中使用 ajax 填充 <select>
【发布时间】:2019-10-04 02:14:20
【问题描述】:

我想通过使用 #1 的 onchange 事件并使用 ajax 在控制器中调用操作来填充 #2,但它返回“未定义”。

我尝试过 JsonResultBehavior.AllowGet,但它在 asp.net 核心中已被弃用

查看:

<div class="col-md-4" style="padding-bottom: 1em;">
    <label for="ddlCorporateName">Corporate Name
    </label>
    <select id="ddlCorporateName" class="form-control" required></select>
</div>

AJAX/jquery:

<script type = "text/javascript">
    function GetSelectedStatus(ddlStatus) {
        var id = ddlStatus.options[ddlStatus.selectedIndex].innerHTML;
        var selectedValue = ddlStatus.value;

        //window.location.href = '@Url.Action("PopulateCorporateName", 
        "POMultipleApprovalSummary") / ' + id;
        $(function() {
            var ddlCorporateName = $("#ddlCorporateName");
            ddlCorporateName.empty().append('<option selected="selected" 
            value = "0"
            disabled = "disabled" > Loading..... < /option>');
            $.ajax({
                type: "POST",
                url: '@Url.Action("PopulateCorporateName", "POMultipleApprovalSummary") / ' + id,
                data: '{}',
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function(reponse) {
                    ddlCorporateName.empty().append('<option 
                            selected = "selected"
                            value = "0" > Select All < /option>');
                            $.each(reponse, function() {
                                ddlCorporateName.append('<option selected="selected" 
                                    value = "' +  this.CorporateName + '" > ' + this.CorporateName  + '</option>');
                            });
                        },
                        failure: function(response) {
                            alert(response.responseText);
                        },
                        error: function(response) {
                            alert(response.responseText);
                        }
                });
        });
}
</script>

控制器:

[HttpPost][Produces("application/json")]
public JsonResult PopulateCorporateName(string id) {
    IPage page = new IPage(_accessor);
    string status = id;
    string accesslevel = string.Empty;
    string CustName = string.Empty;

    if (page.UserPageAccessLevel == Models.Constant.UserAccessLevel.BUHead) {
        if (status == "Printed") {
            accesslevel = "BU01PRINT";
        } else if (status == "Pending SAM") {
            accesslevel = "BU01";
        } else if (status == "Pending Approval") {
            accesslevel = "BU01PENDINGAPPROVAL";
        } else if (status == "Approved SAM") {
            accesslevel = "APPROVEDSAM";
        } else if (status == "Rejected SAM") {
            accesslevel = "REJECTEDSAM";
        }
    } else {
        if (page.UserPageAccessLevel == Models.Constant.UserAccessLevel.ApproverLevel3) {
            accesslevel = "AP03";
        } else if (page.UserPageAccessLevel == Models.Constant.UserAccessLevel.ApproverLevel4) {
            accesslevel = "AP04";
        } else if (page.UserPageAccessLevel == Models.Constant.UserAccessLevel.ApproverLevel2) {
            accesslevel = "AP02";
        } else if (page.UserPageAccessLevel == Models.Constant.UserAccessLevel.ApproverLevel5) {
            accesslevel = "AP05";
        }

        if (status == "All Pending") {
            accesslevel = accesslevel + "ALL";
        } else if (status == "Pending Approval") {} else if (status == "Rejected SAM") {
            accesslevel = "REJECTEDSAM";
        } else if (status == "Approved SAM") {
            accesslevel = "APPROVEDSAM";
        }
    }
    try {
        List < Models.POMultipleApprovalOverride > items2 = new
        List < Models.POMultipleApprovalOverride > ();
        Hashtable htParameters2 = new Hashtable();
        htParameters2.Add("POMultipleGroup", "");
        htParameters2.Add("AccessLevel", accesslevel);
        htParameters2.Add("PONumber", "");
        htParameters2.Add("CorporateName", "Select All");
        items2 = (List < Models.POMultipleApprovalOverride > ) BusinessRules.Corporates.itemPOAppMultiple(htParameters2);

        return Json(items2);
    } catch(Exception e) {
        return Json(e.Message);
    }
}

我只是想从 Items2 对象中填充“CorporateName”元素。

【问题讨论】:

  • 方法itemPOAppMultiple是否返回了预期的结果?
  • 是的,它会返回参数(CorporateID、BUID、CorporateName、BusinessName、Amount、Date),但我只想获取 CorporateName 并将其填充到
  • 那么当前的问题是什么?您是否无法正确填充响应?
  • 只有 'undefined' 填充

标签: c# jquery ajax asp.net-mvc asp.net-core


【解决方案1】:

这应该可以工作

$.each(reponse, function(index, corpInfo) { ddlCorporateName.append('<option selected="selected" value = "' + corpInfo.CorporateName + '" > ' + corpInfo.CorporateName + '</option>'); }); 希望这会有所帮助...

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-09-26
  • 2013-10-10
  • 2021-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多