Mysql ASP.NET MVC实体框架中视图中的多个模型
我想要两个复选框列表一个索引视图 复选框列表从两个不同的表动态绑定。一个是体育 另一个是国家 基本上,我尝试通过编辑模板,但它不能与两个模板一起工作 模型。我面临在一个视图中使用两个模型的问题 这是我在控制器中的索引方法Mysql ASP.NET MVC实体框架中视图中的多个模型,mysql,asp.net,entity-framework,asp.net-mvc-5,Mysql,Asp.net,Entity Framework,Asp.net Mvc 5,我想要两个复选框列表一个索引视图 复选框列表从两个不同的表动态绑定。一个是体育 另一个是国家 基本上,我尝试通过编辑模板,但它不能与两个模板一起工作 模型。我面临在一个视图中使用两个模型的问题 这是我在控制器中的索引方法 SampleDBContext db = new SampleDBContext(); public ActionResult Index() { ViewData["Sports"] = db.Sports.ToList();
SampleDBContext db = new SampleDBContext();
public ActionResult Index()
{
ViewData["Sports"] = db.Sports.ToList();
ViewData["Country"] = db.Countries.ToList();
return View(ViewData["Sports"]);// I am confused and i don't know what to write there we can call both table data.
}
运动模板视图
@model MVCDEMO.Models.Sports
@Html.HiddenFor(x => x.s_Id)
@Html.CheckBoxFor(x => (bool)x.is_selected)
@Html.DisplayFor( x => x.s_Name)
国家/地区的模板视图
@model MVCDEMO.Models.Country
@Html.HiddenFor(x => x.c_Id)
@Html.CheckBoxFor(x => (bool)x.is_selected)
@Html.DisplayFor( x => x.c_Name)
索引视图
<div class="form-horizontal">
<div class="form-group">
<label class="col-sm-2 control-label">
Select Sports
</label>
<div class="col-md-3">
@Html.EditorForModel()//what to write it recognize Sports template
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">
Select Country
</label>
<div class="col-md-3">
@Html.EditorForModel()//what to write it recognize Country template
</div>
</div>
</div>
选择运动项目
@Html.EditorForModel()//如何编写该模板
选择国家
@Html.EditorForModel()//如何编写该模板
如果我为单一模型工作,它会工作得很好。我个人会使用一个强类型视图模型,将
运动和国家作为属性,而不是使用ViewData:
public class IndexPageViewModel
{
public IEnumerable<Sports> Sports { get; set; }
public IEnumerable<Country> Countries { get; set; }
}
公共类IndexPageViewModel
{
公共IEnumerable Sports{get;set;}
公共IEnumerable国家{get;set;}
}
创建两个局部视图,每个类一个(Sport
和Country
),将允许您使用@Html.EditorForModel()
帮助程序。重用局部视图也是一个额外的好处,但这显然取决于特定的应用程序
请注意,“EditorForModel”助手将为模型的每个属性呈现一个编辑器。如果您需要一种不同类型的编辑器,例如下拉菜单,我不确定是否应该使用EditorForModel
。谢谢,没有@html.EditorForModel(),我可以解决这个问题。如果我在视图中使用@model IEnumerable,而不是针对@html.EditorForModel()的特定模型。我尝试了,但失败了…您应该在视图中使用@model IndexPageViewModel
,在局部视图中使用@model Sport
。IndexPageViewModel只是我为视图模型添加的一个名称,用于包含两个列表,如果您愿意,可以重命名它。