2016-04-04 2 views
0

Я передаю несколько моделей моему представлению с использованием динамических моделей, но теперь я не знаю, как отображать модели.Отображение нескольких просмотров в asp.net

Как это сделать с динамическими моделями?

Не стесняйтесь спрашивать, нет ли у вас информации.

+0

Что именно вы хотите отображать на своей модели? и можете ли вы разместить свой код модели, если это возможно, – Izzy

+0

Я показываю кнопки с именами учителей на нем. Учителя - это список . Модель преподавателя состоит из int Id, string Name и int Age. –

+1

Что вы имеете в виду _dynamic models_? –

ответ

0

Создайте свою модель как этот

public class ExpandoObject 
{ 
    public List<Teacher> ListTeachers {get; set;} 
    public List<Student> ListStudent { get; set;} 
} 

Тогда ваши действия

public ActionResult DisplayModel() 
     { 
      ExpandoObject yourModel = new ExpandoObject(); 
      List<Teacher> listofteachers = dbh.GetTeachers(); 
      List<student> listofstudents = dbh.Students(); 

      mymodels.ListTeachers = listofteachers; 
      mymodels.ListStudents = listofstudents; 

      return View("ModelView", yourModel); 
     } 

и ваше мнение должно быть, как это

@model ExpandoObject 
    <head> 
     <link href="~/Content/test.css" rel="stylesheet" /> 
    </head> 
    <body> 
     @using (Html.BeginForm("DisplayModel", "Home")) 
     { 
      <table> 
       @for (int i = 0; i < Model.ListTeachers.Count(); i++) 
       { 
        <tr class="donatenow"> 
         @Html.HiddenFor(m => m[i].ID) 
         @Html.HiddenFor(m => m[i].Name) 
         @Html.HiddenFor(m => m[i].Age) 
         <td> 
          <input type="radio" id="@i" name="amount" onclick="javascript: this.form.submit();" /> 
          <label for="@i">@Html.DisplayFor(m => m.ListTeachers[i].Name)</label> 
         </td> 
        </tr> 
       } 

      </table> 

<table> 
       @for (int i = 0; i < Model.ListStudents.Count(); i++) 
       { 
        <tr class="donatenow"> 
         @Html.HiddenFor(m => m[i].ID) 
         @Html.HiddenFor(m => m[i].Name) 
         @Html.HiddenFor(m => m[i].Age) 
         <td> 
          <input type="radio" id="@i" name="amount" onclick="javascript: this.form.submit();" /> 
          <label for="@i">@Html.DisplayFor(m => m.ListStudents[i].Name)</label> 
         </td> 
        </tr> 
       } 

      </table> 
     } 
    </body> 

И лучший способ сравнить вашу модель с частичным представлением для каждой коллекции.

+0

Вы должны изменить "@ Html.DisplayFor (m => m [i] .Name)" to "@ Html.DisplayFor (m => m.listofteachers [i] .Name)" –

+0

Да Спасибо. есть некоторые улучшения в коде бритвы. Но я сосредоточился на дизайне моделей. – MNF

0
public ActionResult Index() 
    { 
     ViewBag.Message = "Welcome to my demo!"; 
     dynamic mymodel = new ExpandoObject(); 
     mymodel.Teachers = GetTeachers(); 
     mymodel.Students = GetStudents(); 
     return View(mymodel); 
    } 

На ваш взгляд

@using YourProjNameSpace; 
@model dynamic 
@{ 
    ViewBag.Title = "Home Page"; 
} 
<h2>@ViewBag.Message</h2> 

<p><b>Teacher List</b></p> 

<table> 
    <tr> 
     <th>Id</th> 
     <th>Code</th> 
     <th>Name</th> 
    </tr> 
    @foreach (Teacher teacher in Model.Teachers) 
    { 
     <tr> 
      <td>@teacher.TeacherId</td> 
      <td>@teacher.Code</td> 
      <td>@teacher.Name</td> 
     </tr> 
    } 
</table> 

<p><b>Student List</b></p> 

<table> 
    <tr> 
     <th>Id</th> 
     <th>Code</th> 
     <th>Name</th> 
     <th>Enrollment No</th> 
    </tr> 
    @foreach (Student student in Model.Students) 
    { 
     <tr> 
      <td>@student.StudentId</td> 
      <td>@student.Code</td> 
      <td>@student.Name</td> 
      <td>@student.EnrollmentNo</td> 
     </tr> 
    } 
</table> 
Смежные вопросы