我有一个填充了复选框选择器的填充实体,几个字符串。必须在div结构的循环中线性构建(对于每一行)。
实体:
public class Hours
{
[Key]
public int SliceID { get; set; }
public string SliceName { get; set; }
public string Slice { get; set; }
public string StartTime { get; set; }
public string EndTime { get; set; }
public bool Selected { get; set; } //if slice is checked by user on search screen
}
将收集所有时间片以供显示的操作:
public ActionResult Search_Times()
{
int iInstId = 1;
Test.Models.DataLayer db = new Test.Models.DataLayer();
Test.Models.TestDB context = new Models.TestDB();
IEnumerable<Test.Models.Hours> lst = db.GetSlices(context, iInstId).OrderBy(a => a.SliceID);
// ViewBag.SliceList = lst;
return View(lst);
}
我想在我的正文页面的特定部分渲染这些字段以及沿途的一些class / div格式。
例如,如果我使用EditorForModel:
主页中的:
@model IEnumerable<Test.Models.Hours>
@Html.EditorForModel()
时间编辑器模板中的:
@model Test.Models.Hours
<div>
@Html.CheckBoxFor(
x => x.Selected,
new {
@class = "jcf-unselectable",
id = HtmlHelper.GenerateIdFromName("cb_slice." + ViewData.TemplateInfo.GetFullHtmlFieldName(""))
}
)
// this should be a label too, made for example to show text from data.
@Html.DisplayTextFor(x => x.SliceName)
@Html.LabelFor(
x=> x.StartTime,
new {
@class = "info"
})
@Html.LabelFor(
x => x.EndTime,
new {
@class = "info"
})
</div>
在我的情况下,@ Html.LabelFor只会显示行的标题而不是数据(渲染后的源视图中的=“”),与DisplayTextFor不同,它将显示数据,但只是一般文本。
我需要一种方法或修复当前的方式,相应地操纵模型中的数据,标签将显示其字段后面的数据,我可以生成类,需要的id(基于css / html需要)循环中的标签。
最好的方法是什么,viewbags / templates / etc?