如何使用 Razor 视图引擎在 JavaScript 中正确混合 C# 代码。我希望根据 ViewBag 中的值包含或省略 Javascript
Posted
技术标签:
【中文标题】如何使用 Razor 视图引擎在 JavaScript 中正确混合 C# 代码。我希望根据 ViewBag 中的值包含或省略 Javascript【英文标题】:How do I properly mix C# code within JavaScript, using Razor view engine. I wish to include or omit Javascript based on a value in ViewBag 【发布时间】:2012-03-22 06:04:42 【问题描述】:所以我只希望这个 javascript 包含在对浏览器的响应中 如果 ViewBag.L1Cat 不等于 null。目前我收到错误: 无法对空引用执行运行时绑定。以及调试器 由于某种原因不想在 if 语句中停止。 ViewBag 原为 在返回的操作方法中填充了相应的键\值对 视图。
<script type="text/javascript">
@
if(ViewBag.L1Cat != null)
<text>
var FirstLevel =
$('#MenuContainer')
.find('.FirstLevel')
.attr('@(ViewBag.RootCat.ToString());');
</text>
</script>
【问题讨论】:
您的错误是 C# 编译错误? html 渲染是否正确。 【参考方案1】:一定要省略代码吗?
您可能会发现采用这种方法更简洁:
<script type="text/javascript">
var doStuff = @(ViewBag.L1Cat != null ? "true" : "false");
if (doStuff)
var FirstLevel = $('#MenuContainer').find('.FirstLevel').attr('@(ViewBag.RootCat.ToString())');
</script>
或者
<script type="text/javascript">
@if(ViewBag.L1Cat != null)
<text>
var FirstLevel = $('#MenuContainer').find('.FirstLevel').attr('@(ViewBag.RootCat.ToString())');
</text>
</script>
【讨论】:
首选,为什么要发送响应中不会用到的不必要数据。 因为它会弄乱你的代码。干净的代码 > 随机优化以上是关于如何使用 Razor 视图引擎在 JavaScript 中正确混合 C# 代码。我希望根据 ViewBag 中的值包含或省略 Javascript的主要内容,如果未能解决你的问题,请参考以下文章