2014-10-06 4 views
1

Я хочу два CheckBoxList вида в индексе, те CheckBoxList динамически связывается с двух разных таблиц. Один из них - Спорт , а другой - Страна.Несколько моделей в свете в ASP.NET MVC Entity Framework

В основном я пробовал EditorTemplates, но он не работает с двумя моделями . Я сталкиваюсь с проблемой использования двух моделей в одном представлении.

Это мой метод Index в контроллере

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. 
    } 

Template View для спорта

@model MVCDEMO.Models.Sports 

@Html.HiddenFor(x => x.s_Id) 
@Html.CheckBoxFor(x => (bool)x.is_selected) 
@Html.DisplayFor(x => x.s_Name) 

Template View для Страны

@model MVCDEMO.Models.Country 

@Html.HiddenFor(x => x.c_Id) 
@Html.CheckBoxFor(x => (bool)x.is_selected) 
@Html.DisplayFor(x => x.c_Name) 

Index Просмотр

<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> 

Если я работаю для одной модели она работает отлично.

+0

[Несколько моделей в представлении в ASP.NET MVC 4/MVC 5] (http://www.codeproject.com/Articles/687061/Multiple-Models-in-a-View-in-ASP-NET- MVC-MVC) –

+0

спасибо, без @ html.EditorForModel() Я решаю это. – Anjyr

ответ

1

Я бы персонально использовать сильно типизированный вид модель, имеющие Sports и Countries как свойства, а не с помощью ViewData:

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

Создания два частичных вида, один для каждого класса (Sport и Country), позволит вам для использования помощника @Html.EditorForModel(). Повторное использование частичных представлений также будет дополнительным преимуществом, но это, очевидно, зависит от конкретного приложения.

Обратите внимание: помощник 'EditorForModel' будет отображать редактор для каждого свойства модели. Если вам нужен другой вид редактора, например выпадающее меню, я не уверен, что нужно использовать EditorForModel.

+0

, если я использую @model IEnumerable в представлении, чем то, как я нацелен на определенную модель для @ html.EditorForModel(). Я пытаюсь, но я терпеть неудачу ... – Anjyr

+0

Вы должны использовать '@model IndexPageViewModel' в поле зрения и' @model Sport' в частичном представлении. – elolos

+0

IndexPageViewModel - это просто имя, которое я создал для модели представления, содержащей два списка, вы можете переименовать ее, если хотите. – elolos

Смежные вопросы