我有一个填充了复选框选择器的填充实体,几个字符串。必须在 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);
}
我想在我的正文页面的特定部分呈现这些字段以及一些类/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 只会显示行的标题而不是数据(渲染后源视图中的 for=""),与 DisplayTextFor 不同,它将显示数据但只是一个通用文本。
我需要一种方法或修复这种当前方法,为了相应地操作模型中的数据,标签将显示其字段后面的数据,我可以在该标签中生成所需的类、id(基于所需的 css/html)环形。
最好的方法是什么,viewbags/templates/etc?