如何使用MVC 4填充Html.Listbox使用Ajax结果如何使用、结果、MVC、Html

2023-09-10 19:49:33 作者:奔腾的草泥马

在我的MVC 4应用程序,我想填充Html.LisboxFor与阿贾克斯的结果。

In My MVC 4 App i want to populate Html.LisboxFor with an Ajax result.

我的观点:             @using(Html.BeginForm(UpdatePriority,优先级,FormMethod.Post))             {

My View: @using (Html.BeginForm("UpdatePriority", "Priority", FormMethod.Post)) {

    @Html.Hidden("myListBoxValuesValues")

    <div class="row">

        <div class="col-md-2">
            <label>FA:</label>
            @Html.ListBoxFor(m => m.FA, new MultiSelectList(@Model.FA), new { @class = "lbx_FA" })
        </div>

        <div class="col-md-1">
            <input id="btnAdd" type="button" value="  > " onclick="addItem();" />
        </div>

        <div class="col-md-2">
            <label>CEID list:</label>
            @Html.ListBoxFor(model => model.CEIDs, new MultiSelectList(Model.CEIDs), new { @class = "lbx_CEIDs" })
        </div>

...and so on..

我的我的控制器功能(返回字符串的JSON模式):

My my controller function (returns string of a json model):

public string getCeidPerFA(string FA)
        {
            return unitOfWork.ToolRequiredRepository.getCEIDsPerFA_Scenario(DAL.UnitOfWork.Scenario, FA);
        }

存储库功能:

The repository function:

internal string getCEIDsPerFA_Scenario(string scenario, string FA)
        {
            //create the result list (FAs):

            List<string> FAs = FA.Split(',').ToList();

            var CEIDs = from row in context.ToolRequireds
                      where row.Scenario == scenario && FAs.Contains(row.FA)
                      select row.CEID;

            List<string> lst = CEIDs.Distinct().ToList();

            //create Json Result:

            List<SelectListItem> items = new List<SelectListItem>();

            foreach (var ceid in lst)
            {
                items.Add(new SelectListItem { Text = ceid, Value = ceid });
            }


            return Json.Encode(items);
        }

我的脚本:

   function addItem() {

    var result = "";

    var x = document.getElementById("FA");
    for (var i = 0; i < x.options.length; i++) {
        if (x.options[i].selected == true) {
            result += x.options[i].value + ",";
        }
    }

    result = result.substring(0, result.length - 1);

    $.ajax({

        url: "@(Url.Action("getCeidPerFA", "CeidSelection"))",

        data: { "FA": result },

        success: function (data) {


            if (data.length > 0) {
                JSON.pa
                $("#CEIDs").append(JSON.parse(data));
            }
            else
                alert("No Result");
        },

        error: function (xhr) {

            alert("Something went wrong, please try again");

        }

    });
}

我的code是错误的,但我不知道怎么做。 任何帮助将是非常美联社preciated。

My code is wrong but i have no idea how to do so. Any help will be very appreciated.

推荐答案

通过数据环路造成这样

$('#CEIDs').empty();
$.each($(data), function(key, value) {
    $('#CEIDs').append('<option value=' + key + '>' + value + '</option>');
});
 
精彩推荐
图片推荐