Nov*_*ice 4 javascript asp.net-mvc viewbag
我试图使用像这样的View Bag在我的视图上从我的控制器动作发送一个字符串值
public ActionResult Services()
{
ViewBag.TabVal = "EarnMoney";
return View();
}
Run Code Online (Sandbox Code Playgroud)
在我看来,我将View Bag值分配给这样的JavaScript变量
@section scripts{
<script>
var tab = @ViewBag.TabVal;
console.log(tab);
</script>
}
Run Code Online (Sandbox Code Playgroud)
在我的控制台上我得到了这个值
<li id="EarnMoney"> EarnMoney</li>
Run Code Online (Sandbox Code Playgroud)
这是我视图中的HTML元素.
为什么它在我的视图中选择元素而不给出一个字符串作为回报?这是非常奇怪的行为.
Run Code Online (Sandbox Code Playgroud)var tab = @ViewBag.TabVal;
当Razor引擎呈现视图时,@表达式将被直接替换:
var tab = EarnMoney;
Run Code Online (Sandbox Code Playgroud)
因此值将是JavaScript引擎在变量/属性中看到的任何值EarnMoney.
你需要将引号放在文字字符串中的替换中:
var tab = "@ViewBag.TabVal";
Run Code Online (Sandbox Code Playgroud)
您将viewbag值直接输出到javascript,没有引号,因此它不是javascript中的字符串.从服务器生成的Html看起来像这样:
var tab = EarnMoney;
Run Code Online (Sandbox Code Playgroud)
并且由于存在具有该id的dom元素,因此它选择该元素
将ViewBag输出放在这样的引号中:
var tab = "@ViewBag.TabVal";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3496 次 |
| 最近记录: |