[英]Use Razor to set javascript variable
抱歉,如果它對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
的值以bool形式存儲在ViewModel中,則可以使用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());
}
剃刀視圖內的用法:
<script type="text/javascript">
var isOpen = @Model.IsOpen.ToJsBoolean();
</script>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.