4

からのデータを表示するビューを強く型付けしました

ViewModel 
    public class GoldSetnUsers
    {
     bool Public { get; set; }
     public List<GSUsers> gsUsers { get; set; }


        public GoldSetnUsers()
        {
            UsersContext _dbm = new UsersContext();
            this.gsUsers = _dbm.UserProfiles.Select(n => new GSUsers { UserName = n.UserName, isEditor = false, isReviewer = false }).ToList();
        }

        public class GSUsers
        {
            public string UserName { get; set; }
            public bool isEditor { get; set; }
            public bool isReviewer { get; set; }
        }

    }

コントローラの Httpget メソッドはこのビューを表示します

ここに画像の説明を入力

問題は、ポストバック モデルがすべての行のチェック ボックスを false として返すことです。ただし、テーブル Public の外側のチェックボックスは、正しいポストバック値を返します。

コントローラーのポストバック コード

[HttpPost]
    public ActionResult Create(GoldSetnUsers newGS)
    {
        if (ModelState.IsValid)
        {   // newGS gets me value 

          }

}

意見

@model mvc2db.Models.GoldSetnUsers
@using BootstrapSupport;
@using (Html.BeginForm()) {
    @Html.ValidationSummary(true)


         @Html.BeginControlGroupFor(model=>model.Public)
            @Html.LabelFor(model => model.Public,new {@class="control-label"})
        <div class="controls">
            @Html.EditorFor(model => model.Public,new {@class="input-xlarge"})
            @Html.ValidationMessageFor(model => model.Public,null,new{@class="help-inline"})
        </div>
        <div class="controls">
            <table class="table">
    <thead>
    <tr>

        <th>Name</th>
        <th>Reviewer</th>
                <th>Editor</th>

    </thead>
    <tbody>

@foreach (var item in Model.gsUsers) {
    <tr>

        <td>
            @Html.DisplayFor(modelItem => item.UserName)
        </td>

        <td>
            @Html.EditorFor(modelItem => item.isEditor)
        </td>

        <td>
            @Html.EditorFor(modelItem => item.isReviewer)
        </td>



    </tr>
}
</tbody>
</table></div>
@Html.EndControlGroup()

    <div class="form-actions">
            <button type="submit" class="btn btn-primary">Save changes</button>
            <button class="btn">Cancel</button>
          </div>
    </fieldset>
}
4

1 に答える 1

4

foreach ループを使用してチェックボックスを生成しているため、すべてのチェックボックスの ID が同じになると思います。したがって、どれがチェックされ、どれがチェックされないかというあいまいさが生じます。チェックボックスのIDとしてユーザー名を指定してみてください。

于 2013-06-19T04:59:41.053 に答える