从填充模型将数据呈现为表单的最有效方法

时间:2013-05-02 08:42:16

标签: asp.net-mvc entity-framework razor

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

0 个答案:

没有答案