[英]Display the text value of an index from ViewData list of items in MVC, Razor
我会尽量保持简短。 我是MVC的新手。
我有一个Controller,它创建一个时隙列表(如时间表),并将其放入ViewData中。 我知道该怎么做。
我知道如何使用@Html.DropDownList
在下拉菜单中显示此数据,例如,我的创建页面具有以下内容:
@Html.DropDownList("TimeSlot", ViewData["TimeSlotsList"] as List<SelectListItem>)
@Html.ValidationMessageFor(model => model.TimeSlot)
我的问题是在索引视图上,它显示modelItem => item.TimeSlot
并显示时隙的值(1、2、3、4等)
@Html.DisplayFor(modelItem => item.TimeSlot)
我想从ViewData[TimeSlotsList]
列表中显示索引的TEXT值。 显然,索引将是modelItem => item.TimeSlot
的值。
我知道,如果TimeSlots是数据库中自己的表,但这样做不是很容易,但是在这种情况下,我无法更改而不会引起各种迁移麻烦,这会容易得多。
如果有人知道该怎么做或可以指出正确的方向,我们将不胜感激! 我尝试了一些不同的想法,但没有任何效果.....
编辑:
我使用以下功能在控制器中创建时隙列表:
private List<SelectListItem> CreateTimeSlotsList()
{
//Build Time Slot Drop Down
List<SelectListItem> li1 = new List<SelectListItem>();
li1.Add(new SelectListItem { Text = "10-10:50am, Tues Mar. 17", Value = "1" });
li1.Add(new SelectListItem { Text = "11-11:50am, Tues Mar. 17", Value = "2" });
li1.Add(new SelectListItem { Text = "1:10-2pm, Tues Mar. 17", Value = "3" });
li1.Add(new SelectListItem { Text = "2:10-3pm, Tues Mar. 17", Value = "4" });
li1.Add(new SelectListItem { Text = "3:30-4:20pm, Tues Mar. 17", Value = "5" });
li1.Add(new SelectListItem { Text = "8:30-9:20am, Wed Mar. 18", Value = "6" });
li1.Add(new SelectListItem { Text = "9:30-10:20am, Wed Mar. 18", Value = "7" });
li1.Add(new SelectListItem { Text = "11-11:50am, Wed Mar. 18", Value = "8" });
li1.Add(new SelectListItem { Text = "1:10-2pm, Wed Mar. 18", Value = "9" });
li1.Add(new SelectListItem { Text = "2:10-3pm, Wed Mar. 18", Value = "10" });
li1.Add(new SelectListItem { Text = "Hands On/Demo", Value = "99" });
ViewData["timeSlots"] = li1;
return (li1);
}
然后我用
ViewData["TimeSlotsList"] = CreateTimeSlots();
我想显示上面列表的索引的TEXT值。
这不漂亮,但是:
TimeSlotList
时隙的文本描述; TimeSlotList
在ViewData
索引页上; ...然后您可以尝试如下操作:
@Html.DisplayFor( modelItem =>
((List<SelectListItem>) ViewData["TimeSlotsList"])
.Single(sli => sli.Value==modelItem.TimeSlot)
.Text)
埃塔:但是你知道我会怎么做吗? 我将为TimeSlot
对象创建一个模型,以您在CreateTimeSlots
函数中执行的方式填充它们的主列表,然后以与获取模型对象相同的方式从数据层返回它们。 基本上,模拟一个主TimeSlot
表。
然后我会用它来
TimeSlotsList
,然后 TimeSlot
对象)构建ViewModel
。 然后,您可以执行以下操作:
@Html.DisplayFor(modelItem => item.TimeSlot.TimeSlotDescription)
...在您的索引页面上。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.