2016-08-13 1 views
0

リストからデータを受け取る際に問題が発生しました。Chromeで表示されると問題はありません。すべての値があるために正常に見えますが、Visual Studio Debugでは正しく表示されません値ではありません。私は間違っているの?投稿アクションはリストからデータを取得していません<t>オブジェクト

モデル:

public class PermisoModel 
{ 
    public int Id; 
    public string Name; 
    public bool Checked; 
} 

public class ModuloModel 
{ 
    public int Id; 
    public string Name; 
    public List<PermisoModel> Permisos { get; set; } 
} 

コントローラー:

public ActionResult Permisos(int? id) 
    { 
     if (id == null) 
     { 
      return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
     } 
     Usuario usuario = db.Usuario.FirstOrDefault(x => x.id_usuario == id && x.usu_estado == true); 
     if (usuario == null) 
     { 
      return HttpNotFound(); 
     } 
     List<ModuloModel> ModuloModel = db.Modulo.Where(mod => mod.mod_estado == true).Select(mod => new ModuloModel { 
       Id = mod.id_modulo, 
       Name = mod.mod_nombre, 
       Permisos = db.Permiso.Where(per => per.id_modulo == mod.id_modulo && per.per_estado == true).Select(x => new PermisoModel { Id = x.id_permiso, Name = x.id_permiso + " - " + x.per_nombre, Checked = db.PermisoUsuario.Count(y => x.id_permiso == y.id_permiso && y.id_usuario == usuario.id_usuario)>0 }).ToList() 
     } 
     ).ToList(); 
     return View(ModuloModel); 
    } 

    [HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Permisos(int? id, List<ModuloModel> model) 
    { 

     return View(model); 
    } 

ビュー:事前に

@model List<ModuloModel> 
 
@using Data.Models 
 
@using (Html.BeginForm()) 
 
{ 
 
    <p class="btn-group pull-right"> 
 
     <a href="@Url.Action("Index")" class="btn btn-default"> 
 
      <i class="glyphicon glyphicon-menu-left"></i> 
 
      Volver 
 
     </a> 
 
     <button type="submit" class="btn btn-warning"><i class="glyphicon glyphicon-pencil"></i> Editar</button> 
 
    </p> 
 
    <hr style="clear:both;" /> 
 
    @Html.AntiForgeryToken() 
 
    for (int x = 0; x < Model.Count; x++) 
 
    { 
 
     <fieldset class="form-horizontal"> 
 
      @Html.HiddenFor(model => model[x].Id) 
 
      <legend>@Model[x].Name</legend> 
 
      @for (int y = 0; y < Model[x].Permisos.Count; y++) 
 
      { 
 
       <div class="form-group"> 
 
        <label> 
 
         @Html.HiddenFor(model => model[x].Permisos[y].Id) 
 
         @Html.CheckBoxFor(model => model[x].Permisos[y].Checked) 
 
         @Html.DisplayFor(model => model[x].Permisos[y].Name) 
 
        </label> 
 
       </div> 
 
      } 
 
     </fieldset> 
 
    } 
 
}

ありがとう!あなたのHttpPostアクションメソッドのパラメータに投稿されたフォームデータをマッピングするためのモデルバインダー用

+0

私はコントローラコード –

答えて

1

、あなたのviewmodel/DTOクラスのプロパティは、あなたの現在のコードはsetアクセサを持っていないsetgetアクセサ

でのパブリックプロパティでなければなりません。したがって、モデルバインダーは、(投稿されたフォームデータからの)値をそのモデルバインダーに設定することはできません。

これは動作するはずです。

public class PermisoModel 
{ 
    public int Id { set; get; } 
    public string Name { set; get; } 
    public bool Checked { set; get; } 
} 

public class ModuloModel 
{ 
    public int Id { set; get; } 
    public List<PermisoModel> Permisos { get; set; } 
} 
関連する問題