You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MVC 5中如何将ViewBag值传递给JavaScript函数?

解决MVC 5中ViewBag值传递到JavaScript的问题

嘿,折腾7小时肯定够闹心的!你的问题其实出在JavaScript获取隐藏元素的方式上——你拿到了元素对象,但没取它的value属性,咱们马上改好:

方法1:修正隐藏元素的JS获取逻辑

你的隐藏元素写法是没问题的:

@Html.Hidden("Superman", (string)ViewBag.c1)

但原来的JS函数只拿到了DOM元素本身,不是里面存的值,修改成这样:

function getValue1() {
    // 先获取隐藏元素
    const hiddenInput = document.getElementById("Superman");
    // 先判断元素是否存在,再取value转成浮点数,避免报错
    return hiddenInput ? parseFloat(hiddenInput.value) : 0;
}

为什么要加.value?因为document.getElementById("Superman")返回的是整个<input> DOM对象,只有通过.value才能访问到它存储的"0.30"字符串,之后用parseFloat转成数字就没问题了。

方法2:直接在JS中引用ViewBag(更简单)

如果不需要用隐藏元素存值,其实可以直接把ViewBag的值注入到JS里,省去DOM操作的步骤:

function getValue1() {
    // 直接把ViewBag的值注入到JS中
    return parseFloat("@ViewBag.c1");
}

要是你的ViewBag值可能包含特殊字符(比如引号、换行),为了避免JS语法错误,建议用Json.Encode转义一下:

function getValue1() {
    return parseFloat(@Html.Raw(Json.Encode(ViewBag.c1)));
}

这个方法更直接,适合静态传递值的场景。

两种方法选哪个?如果后续需要动态修改这个值(比如用户操作后更新隐藏元素),用方法1;如果只是把ViewBag的静态值传给JS,方法2更省心。

内容的提问来源于stack exchange,提问作者user8511293

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:58:05