Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用jqueryajax函数提交表单问题?_C#_Jquery_Ajax_Asp.net Mvc - Fatal编程技术网

C# 使用jqueryajax函数提交表单问题?

C# 使用jqueryajax函数提交表单问题?,c#,jquery,ajax,asp.net-mvc,C#,Jquery,Ajax,Asp.net Mvc,我有一个包含两个字段的简单表单 当我使用jqueryajax函数提交表单时,服务器只接收第一个字段数据,而不接收第二个字段数据 第一个字段:下拉列表单值选择 第二个字段:下拉列表多值选择 这是我的密码: 表格: 怎么解决呢?我将非常感谢 这里发生的是在viewModel.Books中,您正在作为字符串进行推送,但在控制器的操作中,它需要一个int列表 在发布值之前,请尝试将值解析为INT,如下所示: for (var i = 0; i < selectedBooksIds.length;

我有一个包含两个字段的简单表单 当我使用jqueryajax函数提交表单时,服务器只接收第一个字段数据,而不接收第二个字段数据

第一个字段:下拉列表单值选择

第二个字段:下拉列表多值选择

这是我的密码:

表格:

怎么解决呢?我将非常感谢


这里发生的是在viewModel.Books中,您正在作为字符串进行推送,但在控制器的操作中,它需要一个int列表

在发布值之前,请尝试将值解析为INT,如下所示:

for (var i = 0; i < selectedBooksIds.length; i++) 
{
   //Added parseInt to parse value to int
   viewModel.Books.push(parseInt(selectedBooksIds[i]));
}
尝试使用select2


这是问题中的错别字吗?viewModel.Books*s*.pushselectedbooksid[i]@Peter很抱歉…这是在编辑问题时发生的…您是否尝试在viewmodel中使用int数组而不是列表?int[]Books{get;set;}mvc上的绑定在绑定内容时可能会非常挑剔。是的……我也尝试过了……与案例相同..ViewModel仍然会为Books接收空值。在我的案例中。。。在第二个下拉列表中,我正在从viewModel中检索所有图书列表……在您的情况下,如何做到这一点?官方的select2网站在这里:您应该通过一种方法请求列表,该方法将为您提供对象列表。使用ajax选项从内部请求select2。在后端创建调用的方法。我已经为你更新了答案
@section scripts{
    @Scripts.Render("~/bundles/jquery");
    <script type="text/javascript">
        jQuery(document).ready(function () {

            var viewModel = {
                Customers: "",
                Books: []
            };
            
            // Loading data to viewModel.
            $("#btn_Test").on("click", function () {
                var selectedCustomerId = $("#customer_Id").val();
                var selectedBooksIds = $("#Books_Ids").val();
                viewModel.Customers = selectedCustomerId;
                for (var i = 0; i < selectedBooksIds .length; i++) {
                    viewModel.Books.push(parseInt(selectedBooksIds[i]));//Added parseInt to parse value to int
                }
            });

            // Submit Form.
            $("#formId").submit(function (e) {
                e.preventDefault();
                jQuery.ajax({
                    url: "/RecordCustomerAndBooksIds/Create",
                    method: "post",
                    data: viewModel,
                    success: function () { alert("Done."); },
                    fail: function () { alert("Failed."); }
                });
            })

        });
    </script>
}
public class CustomerIdAndBooksIdsViewModel
{
   public int Customers { get; set; }
   public List<int> Books { get; set; }
}
public ActionResult Create(CustomerIdAndBooksIdsViewModel ids) //
{
   //...
}
for (var i = 0; i < selectedBooksIds.length; i++) 
{
   //Added parseInt to parse value to int
   viewModel.Books.push(parseInt(selectedBooksIds[i]));
}
<script>
$(document).ready(function () {

    //The url we will send our get request to
    var booksUrl = '@Url.Action("GetBooks", "Home")';
    $('#books').select2(
    {
        placeholder: 'Select Books',
        multiple: true,
        ajax: {
            //The url of the json service
            url: booksUrl,
            dataType: 'jsonp'
            }
    }
  });
 </script>



<form id="formId">
<div class="form-group">
    <label>Customer</label>
    @Html.DropDownListFor(m => m.Customers, new SelectList(Model.Customers, "id", "name"), "Select Customer", new { @class = "form-control", id = "customer_Id" })
</div>

<div class="form-group">
    <label>Book</label>
    @Html.TextBoxFor(m => m.Books, new { id = "Book_Ids" }) 
</div>
<button type="submit" class="btn btn-primary">Submit</button>