asp.net-mvc - 在 Razor View 中默认区域

标签 asp.net-mvc razor

这是我要解决的情况:

我有一个主要的共享布局,其中只有一个部分@RenderSection(“Menu”),我想将其默认设置为大多数页面的标准菜单,但是我想在几个子页面中替换/覆盖该部分。在游戏的现阶段,使用Razor可以做到这一点吗?

我希望可以在_ViewStart.cshtml中定义该部分的默认实现,但似乎并不喜欢它。

在这种情况下,“菜单部分 View ”会更好吗?

编辑:

我现在用此代码遇到以下错误:已经定义了以下部分,但尚未为布局页面“〜/ Views / Shared / _Layout.cshtml”:“菜单”呈现。

_Layout.cshtml

            <div id="menu">
@if (IsSectionDefined("menu"))
{
    RenderSection("menu");
}
else { 
    <text>
            <ul>
                <li>@Html.ActionLink("Home", "Index", "Home")</li>
                <li><a href="#">Lookups</a>
                    <ul>
                        @Html.ActionLink("Product","Index","Product")
                    </ul>
                </li>
            </ul>
    </text>
}
        </div>

Index.cshtml
@section menu {
            <ul>
                <li>@Html.ActionLink("Product", "Index", "Product")</li>
                <li>@Html.ActionLink("Form Type", "Index", "Product")</li>
                <li>@Html.ActionLink("Supplier", "Index", "Product")</li>
            </ul>
    }

最佳答案

啊...我搞砸了,发现只要改变逻辑就可以做到:

@RenderSection("Header", false)
@if (!IsSectionDefined("Header")) { 
<header>
    Default Header!
</header>
}

因此,如果我的页面未定义@section Header { ... },它将呈现默认值。

关于asp.net-mvc - 在 Razor View 中默认区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4201186/

相关文章:

asp.net-mvc - xVal 和 ViewModel 模式——可以做到吗?

asp.net-mvc - 在MVC中将DropDownList添加到kendo网格

javascript - 创建用于插入 JavaScript 的 Sitecore cshtml 呈现

asp.net-mvc - HtmlHelper 渲染 htmlAttributes 对象的方法是什么?

html - 如何自定义 razor 用于呈现 MVC5 中的 ModelState 错误的 HTML 属性

c# - mvc 中的自定义错误处理不起作用

javascript - 页面加载后提醒

c# - 每页使用多个 @Html.Action() 是否很昂贵?

c# - 在 1 个 url 下托管 2 个独立的 MVC 网站

html - 以 html 显示我的数据库