美好的一天!我是asp.net mvc的新手,需要将JSonResult数据传递给控制器中的方法。在我的查看中,我有这张表:
IAbstract
此表的值来自另一个表。但是一列,即Quantity,其值为0,因为它将在表格中输入。
因此,我将 QUANTITY_ORDERED 列设为可编辑。然后它会通过这个传递值:
<table id="tbl_orderItems" class="table table-striped table-bordered table-hover dt-responsive nowrap" cellspacing="0">
<thead>
<tr>
<th>Item Code</th>
<th>Quantity</th>
<th>Unit</th>
<th>Item Description</th>
<th>Status</th>
<th>Action</th>
</tr>
</thead>
@if (TempData["listOrder"] != null)
{
foreach (var items in TempData["listOrder"] as List<ebms.ViewModels.OrderItems>)
{ @Html.HiddenFor(modelItem => items.Id, new { @id = "productId" })
<tr>
<td id="productCode">@items.PRODUCT_CODE</td>
<td contenteditable="true" id="quantity">@items.QUANTITY_ORDERED
<input id="save" type="button" value="Save" />
</td>
<td id="unit">@items.MEASUREMENT_NAME</td>
<td id="itemDesc">@items.ITEM_DESCRIPTION</td>
<td id="status">@items.tmpStatus</td>
<td>
@Html.ActionLink("Remove", "Remove", new { id = items.Id },
new { onclick = "return confirm('Are sure want to remove?');" })
</td>
</tr>
}
}
</table>
在我的Controller中,我有这个JSonResult方法保存,它应该从视图中接受QUANTITY_ORDERED的值。
<script>
$(document).ready(function () {
$("#save").prop("disabled", true);
$("div").on('input', function () {
$("#save").prop("disabled", false);
});
$("#save").click(function () {
var modifiedQuanity = {};
modifiedQuanity.Id = $("#productId").text();
modifiedQuanity.QUANTITY_ORDERED = $("#quantity").text();
$.post("/Sales/Save", modifiedQuanity, function (msg) {
$("#save").prop("disabled", true);
$("#msg").html("<strong>" + msg + "</strong>");
});
});
});
</script>
然后我需要将JsonResult数据传递给Controller Method以进行最后的保存。
但我的问题是,它似乎没有将值传递给保存方法。我无法弄清楚如何将JsonResult数据传递给Controller方法。有人可以帮我解决这个问题吗?我错过了什么?
答案 0 :(得分:0)
你应该替换
$.post("/Sales/Save"
带
$.post('@Url.Action("Save", "Sales")'
这将让MVC确保指向控制器操作的链接是正确的。
其次,您是说要将数据传递给另一个名为&#34; AddOrder&#34;的方法。而不是直接将其保存在&#34; Save&#34;方法
我不知道你的方法签名是什么,所以我假设它是一个名为&#34; MyOtherClass&#34;的类中的静态方法。并接受ORDER_DETAILS实例作为参数,如下所示:
public static void AddOrder(ORDER_DETAILS detsails)
{
//... code here
}
在这种情况下,你的&#34; Save&#34;方法很简单,就像这样:
public JsonResult Save(ORDER_DETAILS obj)
{
MyOtherClass.AddOrder(obj);
return Json("Order saved successfully!");
}
因此,如果确切的方法细节不同,您需要根据您的具体情况进行调整。