c# - 通过 ViewBag 评估 web.config 文件的值

标签 c# asp.net-mvc razor

任务很简单。我在 web.config 中具有值(value),如下所示:

 <add key="MenuTypes" value="1,2,3"/>

在 Razor 文件中,我需要根据这些值渲染一些菜单。因此,如果我在配置文件 (MenuTypes) 中的值为 3,我想渲染该项目。如果我没有它,我不想渲染它:

<div>  
            <ul id="setThemUp" class="vehicles">  
                <li><a class="bikes" href="#1">Bikes</a></li>  
                <li><a class="cars" href="#2">Cars</a></li>
                @if (ViewBag.MenuTypes(((int)3).ToString()) > -1)
                {
                   <li><a class="Trucks" href="#3">Trucks</a></li>
               }

            </ul>

我也尝试过:

 <div>  
            <ul id="setThemUp" class="vehicles">  
                <li><a class="bikes" href="#1">Bikes</a></li>  
                <li><a class="cars" href="#2">Cars</a></li>
                @if (ViewBag.MenuTypes.Contains("3"))
                {
                   <li><a class="Trucks" href="#3">Trucks</a></li>
               }

            </ul>
</div>

但在这两种情况下我都得到: 用户代码未处理 RunTimeBinderException 无法对空引用执行运行时绑定(bind)。

我让它像这样工作:

<add key="TrucksEnabled" value="true"/>

<div>  
            <ul id="setThemUp" class="tabs">  
                <li><a class="bikes" href="#1">Bikes</a></li>  
                <li><a class="cars" href="#2">Cars</a></li>
                @if ((bool)ViewBag.TrucksEnabled)
                {
                   <li><a class="Trucks" href="#3">Trucks</a></li>
               }

            </ul>
</div>

但是我不能这样使用它。我需要它像第一个示例一样工作。我不太擅长 Razor/MVC。如有任何帮助,我们将不胜感激。

最佳答案

Controller

var menuTypes = WebConfigurationManager.AppSettings["MenuTypes"].ToString())
string[] tokens = menuTypes.Split(','); //Convert the strings into an array
ViewBag.MenuTypes = tokens;

View - MenuTypes 现在是一个列表,因此您现在可以使用 Contains():

@if (ViewBag.MenuTypes.Contains("3"))
{
     <li><a class="Trucks" href="#3">Trucks</a></li>
}

关于c# - 通过 ViewBag 评估 web.config 文件的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18130641/

相关文章:

c# - MVVM 中模型之间的依赖关系

c# - 重写if语句: One of these statements ended up with one too many pair of braces

c# - 项目引用不会编译 'should be reference'

asp.net-mvc - ASP.NET MVC 中的 OAuth google 连接

c# - MVC : Returning Multiple Rows of data to controller

c# - 在 asp.net mvc5 中使用自定义登录进行表单例份验证

c# - 将类型传递给 C# 中的扩展?

angularjs - Abp 样板 : How to Perform client side translation?

javascript - JsonConvert.SerializeObject 不会将我的对象序列化为 JSON 字符串

c# - 将多个单选按钮绑定(bind)到单个 bool 值