C# 使用jqueryajax函数提交表单问题?
我有一个包含两个字段的简单表单 当我使用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;
这里发生的是在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>