如何将整个select元素传递给控制器​​?

时间:2016-04-14 22:10:01

标签: jquery ajax asp.net-mvc

我有以下代码与我合作传递整个select元素:

  1. Jquery

    errorChannel
    1. 控制器

       $(".btn").click(function () {
            var values = $('#id_cat option');
            var optionsData = $.map(values, function (option) {
                 return option.text;
                 });
             $.ajax({
                  type: "POST",
                  url: "/Products/Test03",
                  datatype: "text",
                  data: JSON.stringify(optionsData), //pass this variable to post request as 'options'
                  contentType: "application/json; charset=utf-8",
                  success: function (data) {
                  //alert('Success'); //.html(data);
                  },
                  error: function () {
                      alert('ERROR'); //$("#testarea").html("ERROR");
                   }
               });
          });
      
  2. 现在我想在select元素中附加所选文本,并将其与整个select元素一起传递。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

您可以使用:

        data: JSON.stringify({
            options: optionsData,
            selected: $("#id_cat_option option:selected").text()
        }), //pass this variable to post request as 'options'

这将在您的代码中发送JSON对象而不是数组。使用.option元素获取所有选项的列表,使用.selected获取所选选项的文本。

然后将控制器方法更改为

public ActionResult Test03(IEnumerable<string> options, string selected)