使用Razor设置javascript变量
本文关键字:变量 javascript 设置 Razor 使用 | 更新日期: 2023-09-27 18:18:07
抱歉,如果这是c#开发人员的基础。我有几个<accordion>
在一个侧边栏,每个有data-ng-click="isOpen = !isOpen"
展开或折叠手风琴。问题是每一个都调用不同的控制器。是否有一种方法可以全局设置isOpen变量,以确保所有的手风琴在默认情况下展开,并可以单击展开/折叠?
阅读:传递Javascript到Razor $rootscope手风琴扩展所有和许多其他
这是.....部分的一个示例代码还有更多不同的控制器:
<accordion>
<div class="zone zone-aside-right">
<div data-ng-controller="SelectUserController" id="account-group-widget">
<accordion-group class="sp-sidebar-module">
<div>
<accordion-heading>
<h3 class="h4 sp-sidebar-module-header">
<a id="headerRelatedContacts" href="javascript: void(0);" data-ng-click="isOpen = !isOpen"><i id="iconRelatedContacts" class="icon-refresh icon-spin"></i>@mycontact.text</a>
</h3>
</accordion-heading>
</div>
</accordion-group>
</div>
</accordion>
欣赏建议…
假设您有isOpen
的值存储为ViewModel中的bool,您可以使用razor @
语法来发出此值作为文本,例如在<script>
块内。
在将c#布尔值转换为JS布尔值时,有一些注意事项,因此我们使用以下扩展方法来处理:
/// <summary>
/// Convert bool value to javascript boolean (as string because it is placed in javascript)
/// </summary>
public static System.Web.IHtmlString ToJSBoolean(this bool value) {
return new MvcHtmlString(value.ToString().ToLower());
}
在razor视图中的使用:
<script type="text/javascript">
var isOpen = @Model.IsOpen.ToJsBoolean();
</script>