簡體   English   中英

使用Razor設置javascript變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM