如何将其变成复选框?

时间:2013-04-15 19:15:18

标签: asp.net-mvc-3 razor

所以我有这样的观点:

@model Tuple<LocApp.Models.Location, LocApp.Models.Service>

@{
    ViewBag.Title = "Create";
}

<h2>Create</h2>

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

@using (Html.BeginForm()) {
    @Html.ValidationSummary(true)
    <fieldset>
        <legend>Location</legend>

        <div class="editor-label">
            @Html.LabelFor(model => model.Item1.name)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Item1.name)
            @Html.ValidationMessageFor(model => model.Item1.name)
        </div>
        <div class="editor-label">
            @Html.LabelFor(model => model.Item1.active)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Item1.active)
            @Html.ValidationMessageFor(model => model.Item1.active)
        </div>

       @Html.CheckBoxFor(model => model.Item2.id)


        <p>
            <input type="submit" value="Create" />
        </p>
    </fieldset>
}

<div>
    @Html.ActionLink("Back to List", "Index")
</div>

和行:@Html.CheckBoxFor(model => model.Item2.id) IMO应该通过并为数据库中的每个服务创建一个基于id的复选框,以便我可以保存id。但是,显然我必须传入一个布尔值?我唯一拥有的是model.Item2.active

想法?

2 个答案:

答案 0 :(得分:0)

CheckBoxes只能有布尔状态:Checked或Unchecked。您的模型必须使用布尔值true或false设置复选框状态。如果希望复选框充当将Id保存到数据库的机制,则需要编写业务逻辑以检查控制器操作上是否选中了复选框。如果选中该复选框,则写入Id,否则不要写入Id。

答案 1 :(得分:0)

你应该有一个bool model.Item1.checked(或者激活,启用等),然后使用它而不是model.Item1.id,它将跟踪该项目的标志是打开还是关闭。 / p>

然后当他们POST表单时,你可以遍历(或使用LINQ)所有项目并保存每个具有.checked = true的id。