【问题标题】:Multiple Models in a View in ASP.NET MVC Entity FrameWorkASP.NET MVC 实体框架中的视图中的多个模型
【发布时间】:2014-11-30 10:24:13
【问题描述】:

我想要两个 CheckBoxList 一个索引视图,那些 CheckBoxList 从两个不同的表动态绑定。一是运动 另一个是国家

基本上我尝试通过 EditorTemplates,但它不适用于两个 楷模。我面临在一个视图中使用两个模型的问题。

这是我在控制器中的索引方法

    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>

如果我为单个模型工作,它可以完美地工作。

【问题讨论】:

标签: mysql asp.net entity-framework asp.net-mvc-5


【解决方案1】:

我个人会使用具有SportsCountries 作为属性的强类型视图模型,而不是使用ViewData:

public class IndexPageViewModel
{
    public IEnumerable<Sports> Sports { get; set; }
    public IEnumerable<Country> Countries { get; set; }        
}

创建两个局部视图,每个类一个(SportCountry),将允许您使用 @Html.EditorForModel() 帮助器。重用部分视图也会带来额外的好处,但这显然取决于具体的应用程序。

请注意,“EditorForModel”助手将为模型的每个属性呈现一个编辑器。如果您需要其他类型的编辑器,例如下拉菜单,我不确定是否应该使用 EditorForModel

【讨论】:

  • 如果我在视图中使用@model IEnumerable,而不是针对@html.EditorForModel() 的特定模型。我尝试但我失败了......
  • 您应该在视图中使用@model IndexPageViewModel,在部分视图中使用@model Sport
  • IndexPageViewModel 只是我为包含两个列表的视图模型编的一个名称,您可以根据需要重命名。
猜你喜欢
  • 2021-11-17
  • 2011-07-22
  • 1970-01-01
  • 2012-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多