ASP.NET 核心 - 有什么办法可以把 viewbag 放在 javascript 或 jquery 上吗?
ASP.NET Core - Is there any way to put the viewbag on javascript or jquery?
我尝试将viewbag数据放入javascript,以便在修改任何数据时无需刷新整个页面即可填充table。它不起作用,但在 html 上它起作用了。
这是我的代码..
fillDatatable();
function fillDatatable() {
$('#TableRecords').html(
@if (Context.Session.GetString("cart") != null)
{
foreach (var item in ViewBag.cart)
{
<tr>
<td>
@item.Items.ItemID
</td>
<td>
@item.Items.ItemModelDescription
</td>
<td class="text-right">
<input id="@("UnitPrice" + item.Items.ItemID)" class="form-control text-right b-r-xl" value="@item.Items.ItemUnitPrice" oninput="return change_unitprice('@item.Items.ItemID')" />
</td>
<td class="text-right">
<input id="@("Quantity" + item.Items.ItemID)" class="form-control text-right b-r-xl" value="@item.Quantity" oninput="return change_quantity('@item.Items.ItemID')" />
</td>
<td class="text-right">
<label id="@("Subtotal" + item.Items.ItemID)">
@(item.Quantity * item.Items.ItemUnitPrice)
</label>
</td>
<td>
<a class="btn btn-sm btn-danger btn-rounded" asp-controller="purchaseorderheader" asp-action="Remove" asp-route-id="@item.Items.ItemID"><span class="fa fa-trash"></span></a>
</td>
</tr>
}
}
);
}
我哪里错了?有什么办法可以纠正吗?任何关于更好方法的建议都被广泛接受。非常感谢您的帮助。
可能是您的 js 运行 在文件上传之前?尝试将您的函数放入 document.onload 或 window.onload(不确定自从我使用 js 和网络应用程序以来已经有一段时间了)
在js中可以这样获取ViewBag数据:
var obj = @Html.Raw(Json.Serialize(ViewBag.cart));
此外,您不能在js函数中编写c#代码。如果不想刷新整个页面,可以使用ajax请求后端获取更新后的数据,然后用返回的数据替换原table中的数据。
更新:
var purchaseOrderList = new List<trnPurchaseOrderLists>
{
new trnPurchaseOrderLists
{
PurchaseOrderID = "1",
Quantity = 10,
Items = new mfItems
{
ItemID = "1",
ItemModelDescription= "A"
}
},
new trnPurchaseOrderLists
{
PurchaseOrderID = "2",
Quantity = 11,
Items = new mfItems
{
ItemID = "2",
ItemModelDescription= "B"
}
},
};
ViewBag.purchaseOrder = purchaseOrderList;
JS
var obj = @Html.Raw(Json.Serialize(ViewBag.purchaseOrder));
console.log(obj);
结果:
我尝试将viewbag数据放入javascript,以便在修改任何数据时无需刷新整个页面即可填充table。它不起作用,但在 html 上它起作用了。
这是我的代码..
fillDatatable();
function fillDatatable() {
$('#TableRecords').html(
@if (Context.Session.GetString("cart") != null)
{
foreach (var item in ViewBag.cart)
{
<tr>
<td>
@item.Items.ItemID
</td>
<td>
@item.Items.ItemModelDescription
</td>
<td class="text-right">
<input id="@("UnitPrice" + item.Items.ItemID)" class="form-control text-right b-r-xl" value="@item.Items.ItemUnitPrice" oninput="return change_unitprice('@item.Items.ItemID')" />
</td>
<td class="text-right">
<input id="@("Quantity" + item.Items.ItemID)" class="form-control text-right b-r-xl" value="@item.Quantity" oninput="return change_quantity('@item.Items.ItemID')" />
</td>
<td class="text-right">
<label id="@("Subtotal" + item.Items.ItemID)">
@(item.Quantity * item.Items.ItemUnitPrice)
</label>
</td>
<td>
<a class="btn btn-sm btn-danger btn-rounded" asp-controller="purchaseorderheader" asp-action="Remove" asp-route-id="@item.Items.ItemID"><span class="fa fa-trash"></span></a>
</td>
</tr>
}
}
);
}
我哪里错了?有什么办法可以纠正吗?任何关于更好方法的建议都被广泛接受。非常感谢您的帮助。
可能是您的 js 运行 在文件上传之前?尝试将您的函数放入 document.onload 或 window.onload(不确定自从我使用 js 和网络应用程序以来已经有一段时间了)
在js中可以这样获取ViewBag数据:
var obj = @Html.Raw(Json.Serialize(ViewBag.cart));
此外,您不能在js函数中编写c#代码。如果不想刷新整个页面,可以使用ajax请求后端获取更新后的数据,然后用返回的数据替换原table中的数据。
更新:
var purchaseOrderList = new List<trnPurchaseOrderLists>
{
new trnPurchaseOrderLists
{
PurchaseOrderID = "1",
Quantity = 10,
Items = new mfItems
{
ItemID = "1",
ItemModelDescription= "A"
}
},
new trnPurchaseOrderLists
{
PurchaseOrderID = "2",
Quantity = 11,
Items = new mfItems
{
ItemID = "2",
ItemModelDescription= "B"
}
},
};
ViewBag.purchaseOrder = purchaseOrderList;
JS
var obj = @Html.Raw(Json.Serialize(ViewBag.purchaseOrder));
console.log(obj);
结果: