.Net MVC 将 ViewBag 值分配给 JavaScript 脚本变量问题
.Net MVC assigning ViewBag value to JavaScript script variable issue
我正尝试像这样使用 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 元素。
为什么在我的视图中选择元素而不在 return 中给出字符串?这真是奇怪的行为。
var tab = @ViewBag.TabVal;
Razor引擎渲染视图时,直接替换@表达式:
var tab = EarnMoney;
因此该值将是 JavaScript 引擎在 variable/property EarnMoney
.
中看到的任何值
您需要将引号放在替换文字字符串的内容中:
var tab = "@ViewBag.TabVal";
您直接将 viewbag 值输出到 javascript,没有引号,所以它不是 javascript 中的字符串。
Html 从服务器生成的内容如下所示:
var tab = EarnMoney;
并且由于有一个 dom 元素具有该 ID,它会选择该元素
将您的 ViewBag 输出像这样放在引号中:
var tab = "@ViewBag.TabVal";
您可以使用引号和@符号从视图包中获取值
var tab = '@ViewBag.TabVal';
我正尝试像这样使用 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 元素。
为什么在我的视图中选择元素而不在 return 中给出字符串?这真是奇怪的行为。
var tab = @ViewBag.TabVal;
Razor引擎渲染视图时,直接替换@表达式:
var tab = EarnMoney;
因此该值将是 JavaScript 引擎在 variable/property EarnMoney
.
您需要将引号放在替换文字字符串的内容中:
var tab = "@ViewBag.TabVal";
您直接将 viewbag 值输出到 javascript,没有引号,所以它不是 javascript 中的字符串。 Html 从服务器生成的内容如下所示:
var tab = EarnMoney;
并且由于有一个 dom 元素具有该 ID,它会选择该元素
将您的 ViewBag 输出像这样放在引号中:
var tab = "@ViewBag.TabVal";
您可以使用引号和@符号从视图包中获取值
var tab = '@ViewBag.TabVal';