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);

结果: