Ajax post 仅返回多个 select 框的第一个值

Ajax post only returning first value for multiple select box

我有一个 MVC 表单,它有一个应用了多个元素的 select 框,这样用户就可以 select 列表中的多个选项。

然后我有 ajax post 将此信息保存到 table:

$(".save").on("click", function (e) {
   disableButton($(e.currentTarget));
   waitForFinalEvent(function () {
               $.ajax({
                  url: "@Url.Action("Requirements", "Api/Access")",
                  type: "POST",
                  data: {
                    UserId: "@ViewBag.Id",
                    Software: $("#ExtraSoftwareSelect").val(),
                  }
           }).done(function (data) {
              toastr.success("Successfully save information", "Success");
              window.location.href = '@Url.Action("", "")';
           }).fail(function (error) {
              displayError(error);
           }).always(function () {
              enableButton($(e.currentTarget));
           });
   }, 250, "Saving results.");
});

我的select邮箱:

<div class="form-group col-xs-12 col-sm-4">
    <div class="input-group ">
        <span class="input-group-addon white">Extra Software</span>
        <select class="form-control gray software-select" id="ExtraSoftwareSelect" title="Select Software" multiple></select>
    </div>
</div>

我的动作控制器:

[HttpPost]
[Route("Requirements")]
[CustomApiAuthorize(Roles = UserRole.Manager)]
public async Task<IHttpActionResult> PostRequirements(RequirementsDetails data)
{
      var software = await _slg_Entity.Software.FirstOrDefaultAsync(z => z.Software1 == data.Software);

      var extraSoftware = new UserSoftware
      {
          UserId = data.UserId,
          ExtraSoftware = data.Software,
          SoftwareId = software.Id
      };

      Entity.UserSoftware.Add(extraSoftware);

      await _slg_Entity.SaveChangesAsync();

      return Ok();
}

问题是该字段的值仅 return 第一个 selected 选项 'MiniTab'。 我不确定它是如何通过的。也许它需要以某种方式添加到列表中?我希望它会 return 由逗号分隔的 selected 字符串。

欢迎所有建议,谢谢。

修正ajax


var softwareArr =  $("#ExtraSoftwareSelect").val().slice();

 $.ajax({
         url: '@Url.Action("Requirements", "Api/Access")',
          type: "POST",
           data: { 
                  details:
                    { 
                      userId: "@ViewBag.Id",
                      extraSoftware: softwareArr
                    }
           },
       success: function (result) {
                .....
            },
            error: function (xhr, exception) {
               ....
            }
       });

并修复 RequirementsDetails class

public class RequirementsDetails 
{
public int UserId {get; set;}
public string[] ExtraSoftware {get;set;}
}

动作

Route("~/Api/Access/Requirements")]
public async Task<IHttpActionResult> PostRequirements(RequirementsDetails details)
.....