我正在尝试使用像这样的View Bag在我的视图中从我的控制器动作发送一个字符串值
public ActionResult Services()
{
ViewBag.TabVal = "EarnMoney";
return View();
}
在我看来,我将View Bag值分配给像这样的
这样的JavaScript变量 @section scripts{
<script>
var tab = @ViewBag.TabVal;
console.log(tab);
</script>
}
在我的控制台上我得到了这个值
<li id="EarnMoney"> EarnMoney</li>
这是我视图中的HTML元素。
为什么在我的视图中选择元素并且没有给出一个字符串作为回报?这是非常奇怪的行为。
答案 0 :(得分:5)
95th Per Tx_fragment_cnt
当Razor引擎呈现视图时,@表达式将被直接替换:
var tab = @ViewBag.TabVal;
因此值将是JavaScript引擎在变量/属性var tab = EarnMoney;
中看到的任何内容。
您需要将引号括在文字字符串中的替换内容:
EarnMoney
答案 1 :(得分:5)
您将viewbag值直接输出到javascript,没有引号,因此它不是javascript中的字符串。 从服务器生成的Html如下所示:
var tab = EarnMoney;
由于有一个带有该id的dom元素,它会选择该元素
将您的ViewBag输出改为引用如下:
var tab = "@ViewBag.TabVal";
答案 2 :(得分:1)
您可以使用引号和@ sign
从查看包中获取价值var tab = '@ViewBag.TabVal';