我正在研究项目,我需要发送javaScript数组“selectedZonesList”,将数据与表单数据一起保存回控制器。我被给了一个使用Ajax.BeginForm的建议...但是我很努力地把所有部分都收集到很多,谢谢......
部分视图中的@using (Html.BeginForm("CreateNewFeeScheme", "Qualification", FormMethod.Post, new { id = "NewFeeSchemeForm" }))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
//rest of code to take user input for all variables ..
<input type="submit" value="Create" class="btn btn-default" />
}
<script type="text/javascript">
var selectedZonesList = new Array();
function AddFeeZoneToScheme(e)
{
var entityGrid = $("#FeeZoneGrid_02").data("kendoGrid");
var selectedZone = entityGrid.dataItem(entityGrid.select());
selectedZone = selectedZone.FeeZoneID;
selectedZonesList.push(selectedZone);
}
</script>
[HttpPost]
public ActionResult CreateNewFeeScheme(FeeScheme newSchemeData, ??????)
{
答案 0 :(得分:3)
您可以使用简单的JQuery AJAX POST来完成。您可以在单个AJAX JQuery帖子中传递Stirngly Typed模型以及字符串数组。
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script>
function submitForm() {
var roles = ["role1", "role2", "role3"];
var model = new Object();
model.Name = "Rami";
jQuery.ajax({
type: "POST",
url: "@Url.Action("AddUser")",
dataType: "json",
contentType: "application/json; charset=utf-8",
data: JSON.stringify({ Roles: roles, person: model }),
success: function (data) { alert(data); },
failure: function (errMsg) {
alert(errMsg);
}
});
}
</script>
<input type="button" value="Click" onclick="submitForm()"/>
然后是控制器动作 -
public ActionResult AddUser(string[] Roles, PersonViewModel person)
{
return null;
}
当您点击按钮时,您将获得服务器端的值,如下所示 -
我使用的示例模型是PersonViewModel -
public class PersonViewModel
{
public string Name { get; set; }
}
答案 1 :(得分:0)
您可以通过两种方式将javascript对象传递给服务器。
将您的对象分配给表单中的元素,这样当您发布表单时,您将获得控制器中的对象。
使用Ajax帖子,将您的对象附加到表单数据并将其发送到服务器。
答案 2 :(得分:0)
我有发送两个数据的问题但是由于ramiramilu指南,我已经找到解决方案....
$.fn.serializeObject = function()
{
var o = {};
var a = this.serializeArray();
$.each(a, function() {
if (o[this.name]) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
}
o[this.name].push(this.value || '');
} else {
o[this.name] = this.value || '';
}
});
return o;
};
function submit_createNewFeeScheme()
{
$.ajax({
type: "Post",
url: "/Qualification/CreateNewFeeScheme",
dataType: "json",
contentType: "application/json; charset=utf-8",
data: JSON.stringify({ ZonesList: selectedZonesList, newFeeSchemeData: $("#NewFeeSchemeForm").serializeObject() }),
success: function (data) {
alert(data);
},
error: function (jqXHR, textStatus, errorThrown) {
}
});
}