2016-04-04 17 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)"を "@ 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> 
関連する問題