使用Razor设置javascript变量

问题描述:

道歉,如果它的基本为C#开发人员在那里。我在一个边栏中有几个<accordion>,并且每个都有data-ng-click="isOpen = !isOpen"来扩展或折叠手风琴。问题是每个这些调用一个不同的控制器。有没有一种方法来全局设置isOpen变量,以确保所有的手风琴默认扩展,并可以点击展开/折叠?使用Razor设置javascript变量

阅读:Passing Javascript to Razor$rootscopeAccordion expand all和许多其他

这是其中一个部分的样本代码.....还有更多的,虽然有不同的控制器:

<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> 

欣赏的建议。 ..

+0

你:

/// <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()); } 

剃须刀视图中使用要让所有的手风琴同时展开和瓦解? – user449689

假设您的视图模型中存储为isOpen的值为bool,则可以使用剃刀@语法将此值作为文本发送,e 。G。在<script>区块内。

有一些注意事项一个C#布尔值转换为JS布尔时候,所以我们用下面的扩展方法来处理这个问题:

<script type="text/javascript"> 
    var isOpen = @Model.IsOpen.ToJsBoolean(); 
</script>