Javascript 返回动态字符串数组的问题

Javascript 返回动态字符串数组的问题,javascript,jquery,html,arrays,Javascript,Jquery,Html,Arrays,我在一个模式弹出窗口中有一个表单,用户可以在文本框中输入文本,然后单击加号按钮,动态地将他们键入的文本添加到一个div中,这样他们就可以继续添加另一个 <div class="form-group"> <label class="control-label col-sm-4" for="prefix"> Cast <span style="color:red">*</span> </label>

我在一个模式弹出窗口中有一个表单,用户可以在文本框中输入文本,然后单击加号按钮,动态地将他们键入的文本添加到一个div中,这样他们就可以继续添加另一个

 <div class="form-group">
    <label class="control-label col-sm-4" for="prefix">
       Cast <span style="color:red">*</span>
    </label>
    <div class="col-sm-5">
      <input type="text" class="form-control col-sm-5" id="Cast" />
    </div>
    <div class="col-sm-1">
      <button type="button" id="btnNewCast" class="btn btn-default">+</button>
    </div>
</div>
<div class="form-group">
  <label class="control-label col-sm-4" for="prefix"></label>
   <div class="col-sm-6" id="newCast">

   </div>
</div>
它被映射到我的模型,并且工作正常

控制器:

    [HttpPost]
    public ActionResult Add(Movie model)
    {


        return View();
    }
我的模型声明如下:

public int MovieId { get; set; }
public int Rating { get; set; }
public int ReleaseDate { get; set; }
public string Title { get; set; }
public string Classification { get; set; }
public string Genre { get; set; }
public string[] Cast { get; set; }
我的问题是,正如您所看到的,Cast是一个字符串数组,用户输入的项目(如图所示)我试图在发布时将它们全部映射到Cast字符串数组

我试过了

"Cast": $("#cast[]").val()
但我在发布无法识别的表达式时遇到jquery错误

我无法将它正确地映射到地图上

**更新**完成发布方法

$("#btnAddMovie").click(function () {

            var stringArr = $('span[data-id="cast[]"]').map(function() {
                return $(this).text().trim();
            });

            $.ajax({
                url: '/Movies/Add',
                //data: $('NewMovie').serialize(),
                data: { "Title": $("#Title").val(), "Classification": $("#Classification").val(), "Rating": $("#Rating").val(), "ReleaseDate": $("#ReleaseDate").val(), "Cast": stringArr },
                cache: false,
                type: "POST",
                success: function (result) {
                    if (result.success) {

                    }
                },
                error: function (result) {
                    alert("Error");
                }
            });


        });
几个问题:

  • 没有
    .val()(值)
    ,请使用
    text()
  • 错误

    未识别表达式

    原因是:
    []
    -普通
    #..
    选择器中不允许使用特殊字符。使用
    [id=”“]

  • 因此,请使用
    map()
    对其进行迭代

  • 另外,通过jQuery创建
    span
    的方式,ID=cast[]被复制,而复制的ID是无效的标记。使用class属性或
    data-*
    属性,如
    data id=“cast[]
    。代码将是:

    var stringArr = $('span[data-id="cast[]"').map(function(){
        return $(this).text().trim();
    });
    

    -

    @ShaunakD我有一个名为Cast的输入,他们在其中键入名称,但用户输入的文本会使用我显示的jquery动态添加到视图中。我需要将每个输入的名称传递回控制器。因此我需要了解如何将他们输入的名称映射到Cast字符串arrayYes,我是conf使用
    .val()
    作为
    val()时使用
    仅适用于输入,显示的代码中没有任何输入。请参阅下面的答案,检查它是否有效。我已实现了您的建议,但现在我收到TypeError:对未实现接口位置的对象调用了“assign”。我已使用完整的post方法更新了我的问题,包括您的suggestionTry选项
    traditional:true,
    在ajax中。或者传递一个逗号分隔的字符串并拆分为数组服务器端。这很有效,但在我的控制器中,我得到的不是Cast[]中的文本,而是[object,object]恐怕您需要在模型中使用
    List Cast
    。ajax有一些限制,其中数组是一个数组。我无法访问该模型,它是由.dll提供的。我在web上查看了如何在控制器中将数组转换为列表,并尝试了以下操作:List List List=new List(model.Cast);这仍然只是显示[对象,对象]
    "Cast": $("#cast[]").val()
    
    $("#btnAddMovie").click(function () {
    
                var stringArr = $('span[data-id="cast[]"]').map(function() {
                    return $(this).text().trim();
                });
    
                $.ajax({
                    url: '/Movies/Add',
                    //data: $('NewMovie').serialize(),
                    data: { "Title": $("#Title").val(), "Classification": $("#Classification").val(), "Rating": $("#Rating").val(), "ReleaseDate": $("#ReleaseDate").val(), "Cast": stringArr },
                    cache: false,
                    type: "POST",
                    success: function (result) {
                        if (result.success) {
    
                        }
                    },
                    error: function (result) {
                        alert("Error");
                    }
                });
    
    
            });
    
    var stringArr = $('span[id="cast[]"').map(function(){
        return $(this).text().trim();
    });
    
    var stringArr = $('span[data-id="cast[]"').map(function(){
        return $(this).text().trim();
    });