0

我正在尝试将复选框添加到 Web 网格上的列中,并且我发现使用 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。该视图使用以下视图模型:

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;}
}

如果这有点含糊,请告诉我,我是新来的,不想用太多不必要的代码让你超载。

干杯

标记

4

3 回答 3

4

复选框的值不能确定它是否被“选中”。你需要使用checked="checked"。

我不是 100% 学过 Razor,但这里有一个尝试:

<input name="IsRequired" type="checkbox" @if(item.IsRequired) { <text>checked="checked"</text>} value="@item.IsRequired" /> 

这能解决你的问题吗?

于 2012-04-24T13:36:31.870 回答
1

如果您像这样声明该列:

grid.Column("Select", "Select", format: @<input type="checkbox" name="selectedrows" value="@item.WedNo" />)

然后在您的操作中,表单发布给您可以访问这些选定的项目,如下所示:

public ActionResult Selections(string[] selectedrows)

这里 selectedrows 将包含所有选中的复选框。

于 2013-11-22T10:48:06.193 回答
0

我想出了如何以我想要的方式做到这一点:

   grid.Column("Select", header: "", format: (item) => @Html.Raw("<a href='" + item.GetSelectUrl() + "' /><img src='" + ((grid.SelectedRow == item) ? "../../Content/images/AdminSelect-ON.png" : "../../Content/images/AdminSelect-OFF.png") + "' />")),
于 2012-05-03T01:16:03.763 回答