Asp.net mvc 在MVC中将模型绑定到视图的正确方法?
我是mvc的新手。我有一个菜单设置页面,用户可以在其中根据自己的角色添加菜单。为此,我想创建一个视图。如何将模型绑定到视图以正确保存设置。我关心的是如何访问viewmodel中的ienumerable项,viewmodel也应该是ienumerable。在这里,我无法将viewmodel转换为ienumerable 任何帮助都将不胜感激 模型类是Asp.net mvc 在MVC中将模型绑定到视图的正确方法?,asp.net-mvc,asp.net-mvc-4,data-binding,Asp.net Mvc,Asp.net Mvc 4,Data Binding,我是mvc的新手。我有一个菜单设置页面,用户可以在其中根据自己的角色添加菜单。为此,我想创建一个视图。如何将模型绑定到视图以正确保存设置。我关心的是如何访问viewmodel中的ienumerable项,viewmodel也应该是ienumerable。在这里,我无法将viewmodel转换为ienumerable 任何帮助都将不胜感激 模型类是 public partial class Role { public int Id { get; set; } public str
public partial class Role
{
public int Id { get; set; }
public string RoleName { get; set; }
public Nullable<int> ParentID { get; set; }
public virtual ICollection<MenuRole> MenuRoles { get; set; }
}
public partial class Menu
{
public int Id { get; set; }
public string MenuName { get; set; }
public string NavigateUrl { get; set; }
public Nullable<int> ParentID { get; set; }
public virtual ICollection<MenuRole> MenuRoles { get; set; }
}
public class MenuRoleVM
{
public int? RoleId { get; set; }
public SelectList RoleList { get; set; }
public IEnumerable<Menu> MenuList { get; set; }
}
public class MenuSettingsController : Controller
{
public ActionResult Add()
{
var _menuRoleVM = new MenuRoleVM
{
RoleList = new SelectList(_db.Roles.ToList(), "Id", "RoleName"),
MenuList = _db.Menus
.Where(m => m.NavigateUrl != "#").ToList()
};
return View(_menuRoleVM);
}
}
下面的例子会有所帮助。在这里,我有一个带有属性的模型ContactModel——FirstName、LastName和Email
@model IEnumerable
@{
ViewBag.Title=“Index”;
}
指数
@ActionLink(“新建”、“创建”)
@DisplayNameFor(model=>model.FirstName)
@DisplayNameFor(model=>model.LastName)
@DisplayNameFor(model=>model.Email)
@foreach(模型中的var项目){
@DisplayFor(modelItem=>item.FirstName)
@DisplayFor(modelItem=>item.LastName)
@DisplayFor(modelItem=>item.Email)
@ActionLink(“编辑”,“编辑”,新的{id=item.id})|
@ActionLink(“详细信息”,“详细信息”,新的{id=item.id})|
@ActionLink(“删除”,“删除”,新的{id=item.id})
}
感谢您的输入@Stephen
我通过如下添加视图来运行代码
@foreach (var item in Model.MenuList.Select((x, i) => new {Data=x,Index=i }))
{
<tr>
<td>@(item.Index+1)</td>
<td>@item.Data.MenuName</td>
</tr>
}
@foreach(Model.MenuList.Select((x,i)=>new{Data=x,Index=i})中的var项)
{
@(项目索引+1)
@item.Data.MenuName
}
您已经正确地传递了模型,但是绑定取决于您在视图中如何使用它。您可以将视图强类型化,并在表单中使用属性,以便在发布后接收这些属性。小示例将非常有用。我关心的是如何访问viewmodel中的ienumerable项,viewmodel也应该是ienumerable。在这里,我无法将viewmodel转换为ienumerable。如果您的意思是要在propertyMenuList
中显示每个菜单
,则不必,视图模型不必是ienumerable
——您可以循环查看MenuList
中的每个项目(即ienumerable
)