Access a Viewbag like an Array?

后端 未结 5 1292
余生分开走
余生分开走 2021-01-13 14:44

Imagine a view bag called

 ViewBag.Modes

this contains the following:

Simple
Advanced
Manual
Complete

Ho

相关标签:
5条回答
  • 2021-01-13 15:16

    Thanks for the posts but shortly after writing this I came up with this solution using a model & list as below this could also be done using viewbag instead of model.

    List<string> list = new List<string>();
                foreach (Models.AppModeInfo blah in Model.theAppModes)
                {
                    list.Add(blah.Name);
                }
    
                var AppModeText = "";
                switch (item.AppModeId)
                {
                    case 1:
                        AppModeText = list[0];
                        break;
                    case 2:
                        AppModeText = list[1];
                        break;
                    case 3:
                        AppModeText = list[2];
                        break;
                    case 4:
                        AppModeText = list[3];
                        break;
                    case 5:
                        AppModeText = list[4];
                        break;
                }
    
    0 讨论(0)
  • 2021-01-13 15:32

    In your controller:

    string[] Modes = {"Simple", "Advanced", "Manual", "Complete" };
    ViewData["Modes"] = Modes;
    

    In your View:

    <div>
        @(((string[])ViewData["Modes"])[0]) 
    </div>
    <div>
        @(((string[])ViewData["Modes"])[1]) 
    </div>
    <div>
        @(((string[])ViewData["Modes"])[2]) 
    </div>
    
    0 讨论(0)
  • 2021-01-13 15:34

    ViewBag is a dynamic property, which complicates things a bit.

    For the behavior you're looking for, you might want to use ViewData instead. ViewData is a dictionary, which means you can access the values of each index using Linq:

    this.ViewData.Keys.ElementAt(0);
    
    0 讨论(0)
  • 2021-01-13 15:35

    This does the trick for me:

    Controller:

    public ActionResult Index()
    {
        var stringArray = new string[3] { "Manual", "Semi", "Auto"};
        ViewBag.Collection = stringArray;
        return View();
    }
    

    View:

        @foreach(var str in ViewBag.Collection)
        {
            @Html.Raw(str); <br/>
        }
    
        @for (int i = 0; i <= 2; i++ )
        {
            @Html.Raw(ViewBag.Collection[i]) <br/>
        }
    

    Output:

    enter image description here

    Sorry for not using your terms. I was scrachting this together from the top of my head.

    0 讨论(0)
  • 2021-01-13 15:41

    Using the ViewBag:

    Controller

    public ActionResult Index()
    {
    List<string> modes = new List<string>();
    modes.Add("Simple");
    modes.Add("Advanced");
    modes.Add("Manual");
    modes.Add("Complete");
    ViewBag["Modes"] = modes;
    return View();
    }
    

    View

    <h1>List of Modes</h1>
    @{foreach (var mode in ViewBag.Modes) {
        <li>
            @hobby
        </li>
    } }
    

    ----------------------------------------------------------------

    Using the ViewData:

    Controller

    public ActionResult Index()
    {
        string[] Modes = {"Simple", "Advanced", "Manual", "Complete" };
        ViewData["Modes"] = Modes;
        return View();
    }
    

    **View

    <h1>List of Modes</h1>
    @foreach (string mode in ViewData["Modes"] as string[]) {
        <li>
            @mode
        </li>
    }
    
    0 讨论(0)
提交回复
热议问题