【问题标题】:Use Razor to set javascript variable使用 Razor 设置 javascript 变量
【发布时间】:2018-02-12 07:31:28
【问题描述】:

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

阅读: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>

欣赏建议...

【问题讨论】:

  • 你想让所有的手风琴同时展开和折叠吗?

标签: javascript c# asp.net-mvc razor


【解决方案1】:

假设您将 isOpen 的值作为 bool 存储在 ViewModel 中,您可以使用 razor @ 语法将此值作为文本发出,例如在&lt;script&gt; 块内。

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

【讨论】:

    猜你喜欢
    • 2013-01-29
    • 2019-09-18
    • 2011-08-22
    • 2017-09-20
    • 2014-06-20
    • 2013-08-07
    • 1970-01-01
    相关资源
    最近更新 更多