c# - 根据 ViewModel 的属性更改 div 类

标签 c# asp.net-mvc-3 razor

我正在创建一个基于 Twitter bootstrap 的页面。

在特定的 CUD 中,我需要更改一个 div 的类。 class="tab-pane active"class="tab-pane" 取决于我的 View 模型的属性。

该属性可能是一个 int,然后对于每个 div,我将在事件选项卡上进行验证。听起来不错吧?

我的想法是这样的:

<div(@Model.ActiveTab == 1 ? class="tab-pane active" : class="tab-pane")  id="1">

但显然这不起作用

最佳答案

像这样尝试:

<div class="tab-pane @(Model.ActiveTab == 1 ? " active" : "")" id="1">
    ...
</div>

或者为了避免这种可怕的标签汤,编写一个自定义的 HTML 帮助程序:

public static class TabExtensions
{
    private class TabControl: IDisposable
    {
        private readonly ViewContext _viewContext;
        public TabControl(ViewContext viewContext)
        {
            _viewContext = viewContext;
        }

        public void Dispose()
        {
            _viewContext.Writer.Write("</div>");
        }
    }

    public static IDisposable Tab(this HtmlHelper htmlHelper, bool active, object htmlAttributes)
    {
        var div = new TagBuilder("div");
        div.MergeAttributes(new RouteValueDictionary(htmlAttributes));
        div.AddCssClass("tab-pane");
        if (active)
        {
            div.AddCssClass("active");
        }
        htmlHelper.ViewContext.Writer.Write(div.ToString(TagRenderMode.StartTag));
        return new TabControl(htmlHelper.ViewContext);
    }
}

可以这样使用:

@using (Html.Tab(Model.ActiveTab == 1, new { id = "tab1" }))
{
    ...
}

在这种情况下会发出:

<div class="tab-pane active" id="tab1">
    ...
</div>

关于c# - 根据 ViewModel 的属性更改 div 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10229343/

相关文章:

c# - 如何在 Orchard 中根据字符串名称创建形状?

c# - 如何绑定(bind)自定义类型的集合 (IEnumerable)?

razor - asp.net razor 网页验证和使用多种形式

asp.net-mvc - 不平衡 DIV 使用 MVC Razor 为每个循环关闭 DIV

asp.net-mvc - 具有多个路由值的 Url.Action 助手的问题

c# - 为什么我的 DropDownListFor 不会在我发布时填充我的 id 属性?

c# - 如何检测是否从 Unity 安装了 Google Play 服务?

c# - 保存和加载词典。改善内存占用

c# - 如何在 C# 的单元/集成测试中模拟 "No Internet Connection"

jquery - 如果 session 已过期,则处理 AJAX 请求