【发布时间】:2015-08-24 15:15:59
【问题描述】:
我正在使用MVC 4 并希望使用Ajax Call 向controller 方法发送一个表单和一些其他值,但在努力尝试之后我无法做到这一点。请查看下面的代码并指导我我的代码中的一些增强功能。
我的脚本代码:
$(document).ready(function () {
var ids = [];
$("#btnproceed").click(function () {
debugger;
// $("div[class^='apple-']")
$("div[class^='dvDynamic_']").each(function () {
debugger;
var pids = $(this).text();
ids.push(pids);
});
ids = [];
});
序列化和发送的表单代码:
<form id="customerform">
<div id="customerdetails">
<label>Your Information</label><br />
@*@for (int i = 0; i < Model.Orders.Count; i++) {*@
@Html.TextBoxFor(m => m.Orders.Customer, new { @placeholder = "Enter Your Full Name" })
@Html.ValidationMessageFor(m => m.Orders.Customer)
@Html.TextBoxFor(m => m.Orders.Phone, new { @placeholder = "Enter Your Cell Number" })
@Html.ValidationMessageFor(m => m.Orders.Phone)
@Html.TextAreaFor(m => m.Orders.Address, new { @rows = 3, @cols = 2, @style = "width:300px;", @placeholder = "Enter Your Complete Delivery Address" })
@Html.ValidationMessageFor(m => m.Orders.Address)
<input id="btnback" type="button" value="Back" /> <input id="btnsubmit" type="button" value="Submit" /> @*<input id="submit" type="submit" value="Save" />*@
</div>
</form>
我的最终提交按钮的代码:
$('#btnsubmit').click(function () {
debugger;
var form = [{ "name": "customerinfo", "value": JSON.stringify($('#customerform')) }];
var data = JSON.stringify({
'products': ids,
'customerinfo': form
});
$.ajax({
type: "POST",
url: "@Url.Action("GetIds", "Store")",
data: data,
contentType: "application/json; charset=utf-8",
success: function (r) {
alert(r.d);
}
});
});
以及controller中我的接收方式代码
public JsonResult GetIds(string products, string customerinfo)
{
}
控制器方法中的值将变为空
【问题讨论】:
-
请帮助解决这个问题
-
为什么要声明一个数组
ids = [];,将它填充到$.each()中并将其重置为一个空数组(第一个脚本的最后一行)?你真正想发布什么?表单和额外的值数组? -
@StephenMuecke 是的,我想在数组 ids 中发布一个表单和值,这将来自上一个按钮单击。获取 ids [] 值的方法是否正确?
-
您的第一个脚本将其重置为空数组。您应该发回您的模型,而不是字符串。您在视图中声明的模型是什么,即
@model ??? -
@StephenMuecke 模型 ProductOrderViewModel
标签: jquery ajax asp.net-mvc asp.net-mvc-4 razor