0

CheckBoxList ヘルパー コントロールを使用する代わりに、mvc フレームワークのエディター テンプレートを使用したいと考えています。

Shared\EditorTemplate には TemplateViewModel.cshtml があります

@model ITMS.ViewModels.TemplateViewModel

<p class="checkbox">
@Html.CheckBoxFor(x => x.IsChecked)
@Html.HiddenFor(x => x.Id) 
@Html.LabelFor(x => x.Name)
</p>

テンプレートにはビューモデルと同じ名前が必要なので...ここに行きます:

public class TemplateViewModel
{  
        public bool IsChecked { get; set; }
        public int Id { get; set; }       
        public string Name { get; set; }   
}

Home\Delete.cshtml には次のものがあります。

@model IEnumerable<ITMS.ViewModels.TemplateViewModel>

@foreach (var item in Model)
{
    @Html.EditorFor(m => item)   
}

Delete.cshtml の出力は完全に混乱しています。

チェックステータスと名前が表示され、IDがどこかに隠されていることを望んでいます。

TemplateViewModel.cshtml/Delete.cshtml を修正するにはどうすればよいですか?

4

1 に答える 1

0

foreach ループをDelete.cshtml取り除き、単純に:

@model IEnumerable<ITMS.ViewModels.TemplateViewModel>
@Html.EditorForModel()

エディター テンプレートは、モデル (この場合はコレクション) の各要素に対して自動的にレンダリングされるため、ループを記述する必要はありません。

また、エディタ テンプレートが にあることを確認してください~/Views/Shared/EditorTemplates/TemplateViewModel.cshtml。あなたの質問Shared\EditorTemplateでは、どちらが間違った場所であるかを書きました(最後に を忘れsました)。テンプレートは、従わなければならない規則に従って機能します。

于 2012-05-07T18:57:47.647 に答える