0

我有一个填充了复选框选择器的填充实体,几个字符串。必须在 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?

4

0 回答 0