我有这样的模型
public class Roles
{
[Key]
public string RoleId {get;set;}
public string RoleName {get;set;}
}
我遇到的挑战是为List创建一个单独的视图并创建。我所做的每一次尝试都以数据类型错误结束。我该怎么办?
答案 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>
}
}
}
如果我的回答有帮助,请告诉我。