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只是我为视图模型添加的一个名称,用于包含两个列表,如果您愿意,可以重命名它。