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()

Hours EditorTemplate で:

@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 に基づく) を生成できます。ループ。

ビューバッグ/テンプレート/など、これを行う最良の方法は何ですか?

4

0 に答える 0