在foreach循环中获取CheckBox值

时间:2015-09-15 11:31:12

标签: asp.net-mvc checkbox

我有一个带有OtherCountries的模型作为列表。在每个国家之前,我需要放一个复选框:

@foreach (string country in Model.OtherCountries)
    {
        <div class="form-group">
            <div class="col-md-2 control-label">
                @Translations.Text
            </div>
              <div class="col-md-10">
                <div class="col-md-1">
                    <label>
                        <input type="checkbox" name="checkboxCountry" id="checkboxCountry" value="true"/>
                    </label>
                </div>
                <div class="col-md-11">
              <textarea name="@(Html.NameFor(m => m.OtherCountries))" class="form-control textarea-resize" rows="5">@country</textarea>
              </div>
            </div>
        </div>
    }

使用提交按钮我可以将模型发送给控制器,但我的问题是我不知道这个复选框属于哪个国家/地区?每个国家/地区前面都有一个复选框,但如果我想要从列表中删除国家/地区,我必须根据复选框执行此操作。

2 个答案:

答案 0 :(得分:0)

好的,您需要为此案例创建一个视图模型,在该视图模型中,您可以添加具有以下国家/地区名称的字段:

public [datatype] USA {get; set;}

视图模型的名称可以是:public class CountriesViewModel

现在,当您填充View时,可以将这些名称添加到复选框中,这样当您将信息发送回控制器时,您可以在视图中执行此操作:

@foreach (string country in Model.OtherCountries)
{
    <div class="form-group">
        <div class="col-md-2 control-label">
            @Translations.Text
        </div>
          <div class="col-md-10">
            <div class="col-md-1">
                <label>
                    <input type="checkbox" name="@country" />
                </label>
            </div>
            <div class="col-md-11">
          <textarea name="@(Html.NameFor(m => m.OtherCountries))" class="form-control textarea-resize" rows="5">@country</textarea>
          </div>
        </div>
    </div>
}

然后你可以在控制器中看到这个:

public ActionResult CountriesController(CountriesViewModel contries)
{
}

答案 1 :(得分:0)

您需要创建一个模型来包装国家/地区名称和选择的布尔值,并将此字符串列表替换为此新模型的列表。从那时起,只需将复选框的值与每个国家/地区的选定属性以及带有标签的名称相关联,一旦您点击提交,您将获得所需的信息。