C#MVC列表和创建在同一视图中

时间:2014-08-02 06:53:58

标签: c# asp.net-mvc asp.net-mvc-viewmodel

我有这样的模型

public class Roles
{
     [Key]
     public string RoleId {get;set;}
     public string RoleName {get;set;}
}

我遇到的挑战是为List创建一个单独的视图并创建。我所做的每一次尝试都以数据类型错误结束。我该怎么办?

2 个答案:

答案 0 :(得分:2)

回答1:

为了隐藏@Html.EditorForModel()中的某些字段(如评论部分中所述),您必须使用:

[ScaffoldColumn(false)]属性

前: -

 [Key]
 [ScaffoldColumn(false)]
 public string RoleId {get;set;}

回答2:

并在同一视图上创建和显示列表:

型号:

public class Roles
{
 [Key]
 public string RoleId {get;set;}
 public string RoleName {get;set;}
 public List<Roles> Roleslist { get;set; }  //Take a list in Model as shown
}

查看:

 <div id="mainwrapper">

 @using (Html.BeginForm("// Action Name //", "// Controller Name //", FormMethod.Post, new { @id = "form1" }))
  {  

   @Html.TextBoxFor(m => m.RoleName)
   <input type="submit" value="Save"/>

  }
  <div id="RolesList">
   @if(Model!=null)
    {
      if(Model.Roleslist!=null)
      {
       foreach(var item in Model.Roleslist) //Just Populate Roleslist with values on controller side
       {
       //here item will have your values of RoleId and RoleName 
       }
      }
    }
  </div>

  </div>

答案 1 :(得分:2)

同时检查您的控制器,确保您没有将Roles.ToList()传递到CreateRole视图。 你可以这样做:

  [HttpGet]
    public ActionResult CreateRole()
    {
        var roles = from ur in db.roles
                    orderby ur.RoleName
                    select ur;
        ViewBag.Listroles = roles.ToList();
        return View();
    }

其中db是您的DbContext

您的观点应如下所示:

  @{

      if(ViewBag.Listroles != null){
      foreach (var roles in ViewBag.Listroles)
        {
            <tr>

                <td>@roles.RoleName</td>
                <td>
                      @Html.ActionLink("Edit", "EditRoles", new { id=roles.RoleId }) |
                      @Html.ActionLink("Details", "Details", new { id=roles.RoleId }) |
                      @Html.ActionLink("Delete", "Delete", new { id=roles.RoleId })
                 </td>
            </tr>
        }

      }

    }

如果我的回答有帮助,请告诉我。