【发布时间】:2012-05-05 03:36:47
【问题描述】:
我正在尝试向网络网格上的列添加一个复选框,但我发现使用 Html.CheckBox 来渲染它很难。如果我使用 input type="checkbox" 它会呈现,但我似乎无法将值保存在视图模型中。
我有一个相当复杂的视图,它有两个 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;}
}
如果这有点含糊,请告诉我,我是新来的,不想用太多不必要的代码让你超载。
干杯
标记
【问题讨论】:
-
我没有使用过WebGrid,但怀疑它可能与Html.CheckboxFor 一样,它会生成一个始终设置为false 的额外隐藏字段。这可能是导致问题的原因 - 请参阅stackoverflow.com/questions/2697299/…
标签: asp.net-mvc-3 checkbox webgrid