Webグリッドの列にチェックボックスを追加しようとしていますが、Html.CheckBoxを使用してレンダリングするのが難しいと感じています。input type = "checkbox"を使用するとレンダリングされますが、ビューモデルに値を保存できないようです。
2つのwebGridがあるかなり複雑なビューがあり、一方の項目を選択してもう一方の項目に移動します。grid1に移動すると、必要に応じて各行に対してチェックボックスをオンにできます。保存するチェックボックスの値を取得できないことを除いて、すべてが機能しています。
チェックボックスがあるグリッドのコードは次のようになります。
var grid1 = new WebGrid(source: Model.FieldsInTemplate, canSort: false, defaultSort:"FieldName");
@grid1.GetHtml(headerStyle:"gridGroupRow", tableStyle: "gridGroup", rowStyle: "gridRow", alternatingRowStyle: "gridRowAlt", columns: grid1.Columns(
grid1.Column("FieldName", "Field Name"),
grid1.Column(header: "Required", format: @<text><input name="IsRequired" type="checkbox" value="@item.IsRequired" /></text>),
grid1.Column(format: (item) => new HtmlString("<a href='#' id='test' onclick='updateTemplate(false," + item.FieldId.ToString() + ");'>Remove</a>"))
))
したがって、上記を使用すると、グリッドはチェックボックスを使用してレンダリングされますが、送信時にエンティティは常にfalseになります。ビューは次のviewModelを使用します。
public class TemplateFieldInteractViewModel
{
public IList<MetadataTemplateFieldInstanceDisplayViewModel> FieldsInTemplate
{
get;
set;
}
public IList<MetadataTemplateFieldInstanceDisplayViewModel> FieldsNotInTemplate
{
get;
set;
}
}
MetadataTemplateFieldInstanceDisplayViewModelは次のようになります。
public class MetadataTemplateFieldInstanceDisplayViewModel
{
public int FieldId {get;set;}
public string FieldName {get;set;}
public bool IsRequired {get;set;}
}
これが少し曖昧な場合はお知らせください。私はここで初めてです。不要なコードが多すぎて過負荷にならないようにします。
乾杯
マーク