想象一下名为
的视图包 ViewBag.Modes
这包含以下内容:
Simple
Advanced
Manual
Complete
如何通过索引访问viewbag,就像在数组中一样?
例如Simple在索引0处然后看起来像这样
ViewBag.Modes[0]
我尝试了上述内容,但它不起作用......如何使用viewbag复制此内容,或者我可以使用哪种解决方法?
答案 0 :(得分:4)
这对我有用:
控制器:
public ActionResult Index()
{
var stringArray = new string[3] { "Manual", "Semi", "Auto"};
ViewBag.Collection = stringArray;
return View();
}
查看:
@foreach(var str in ViewBag.Collection)
{
@Html.Raw(str); <br/>
}
@for (int i = 0; i <= 2; i++ )
{
@Html.Raw(ViewBag.Collection[i]) <br/>
}
输出:
抱歉不使用您的条款。我从头顶一起把它拼凑起来。
答案 1 :(得分:4)
ViewBag是一个动态属性,它使事情变得复杂。
对于您正在寻找的行为,您可能希望改用ViewData。 ViewData是一个字典,这意味着您可以使用Linq:
访问每个索引的值this.ViewData.Keys.ElementAt(0);
答案 2 :(得分:0)
<强>控制器强>
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();
}
查看强>
<h1>List of Modes</h1>
@{foreach (var mode in ViewBag.Modes) {
<li>
@hobby
</li>
} }
<强>控制器强>
public ActionResult Index()
{
string[] Modes = {"Simple", "Advanced", "Manual", "Complete" };
ViewData["Modes"] = Modes;
return View();
}
**视图
<h1>List of Modes</h1>
@foreach (string mode in ViewData["Modes"] as string[]) {
<li>
@mode
</li>
}
答案 3 :(得分:0)
感谢您的帖子,但在写完这篇文章后不久,我想出了一个模型&amp;列表如下所示也可以使用viewbag而不是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;
}
答案 4 :(得分:0)
在您的控制器中:
string[] Modes = {"Simple", "Advanced", "Manual", "Complete" };
ViewData["Modes"] = Modes;
在您看来:
<div>
@(((string[])ViewData["Modes"])[0])
</div>
<div>
@(((string[])ViewData["Modes"])[1])
</div>
<div>
@(((string[])ViewData["Modes"])[2])
</div>