2016-10-07 15 views
1

C#MVCの部分/ビュー/コントローラ間でデータ/モデルをどのように転送できますか? _StudentList Partial.cshtmlモデルをレイザービュー(パーシャルなど)に渡す

@model IEnumerable<MVC_BasicTutorials.Models.Student> 

<table class="table"> 
<tr> 
    <th> 
     @Html.DisplayNameFor(model => model.StudentName) 
    </th> 
    <th> 
     @Html.DisplayNameFor(model => model.Age) 
    </th> 
    <th></th> 
</tr> 

@foreach (var item in Model) { 
<tr> 
    <td> 
     @Html.DisplayFor(modelItem => item.StudentName) 
    </td> 
    <td> 
     @Html.DisplayFor(modelItem => item.Age) 
    </td> 
    <td> 
     @Html.ActionLink("Edit", "Edit", new { id=item.StudentId }) | 
     @Html.ActionLink("Details", "Details", new { id=item.StudentId }) | 
     @Html.ActionLink("Delete", "Delete", new { id = item.StudentId }) 
    </td> 
</tr> 
} 

</table> 

StudentControllerModel

下の赤い線で、

私はthis例を複製しようとしているが、@model IEnumerable<MVC_BasicTutorials.Models.Student>は私にエラーを与えている:

public class StudentController : Controller 
{ 
public class Student 
    { 
     public int StudentId { get; set; } 
     public string StudentName { get; set; } 
     public int Age { get; set; } 
    } 
IList<Student> students; 

public StudentController() 
{ 
    students = new List<Student>{ 
        new Student() { StudentId = 1, StudentName = "John", Age = 18 } , 
        new Student() { StudentId = 2, StudentName = "Steve", Age = 21 } , 
        new Student() { StudentId = 3, StudentName = "Bill", Age = 25 } , 
        new Student() { StudentId = 4, StudentName = "Ram" , Age = 20 } , 
        new Student() { StudentId = 5, StudentName = "Ron" , Age = 31 } , 
        new Student() { StudentId = 6, StudentName = "Chris", Age = 17 } , 
        new Student() { StudentId = 7, StudentName = "Rob",Age = 19 } , 
       }; 

} 
// GET: Student 
public ActionResult Index() 
{ 

    return View(students); 
} 
} 

Index.cshtml

@model IEnumerable<MVC_BasicTutorials.Models.Student> 

<h3>Student List</h3> 
<p> 
@Html.ActionLink("Create New", "Create") 
</p> 

@{ 
Html.RenderPartial("_StudentList", Model); 
} 

私はこのhttps://stackoverflow.com/a/11326470/2441637を読んで、それは私がアプリを実行する場合、私はNullReferenceException: Object reference not set to an instance of an object.

+0

'MVC_BasicTutorials.Models'の名前空間に' Student'というクラスがありますか? – JamieD77

+0

'MVC_BasicTutorials.Models'はまったくありません。どこにあるのかわからず、StudentクラスがStudent Controllerになってからの方法は –

+0

です。パスはおそらく' {SolutionName} .Controllers.StudentController.Student'です。 – JamieD77

答えて

1

あなたStudentクラスはStudentControllerのサブクラスとして定義されている@foreach (var item in Model)でエラーを取得する:(解決することができませんでした。したがって、このクラスをモデルタイプとして使用する場合は、適切な名前空間/完全修飾クラス名を使用する必要があります。

変更

あなたの StudentControllerクラスの下の名前空間を持つ PutYourNameSpaceHereを交換する必要が
@model IEnumerable<PutYourNameSpaceHere.StudentController.Student> 

への最初の行は、新しいファイルにStudentクラスを移動

それとも

です(または存在する場合もある)が、ネームスペースの下でMVC_BasicTutorials.Models

namespace MVC_BasicTutorials.Models 
{ 
    public class Student 
    { 
     public int StudentId { get; set; } 
     public string StudentName { get; set; } 
     public int Age { get; set; } 
    } 
} 
これをやって、あなたは

だからStudentControllerクラスの最初の行としてこれを追加し、このクラスを使用することができますので、あなたのStudentControllerにusingステートメントを持っていることを確認する必要があり

@using MVC_BasicTutorials.Models 
+0

完全なpahが機能しなかったので、 '[myExistingNameSpace] .Model'を使って別のクラスを作成し、実行するために' @using MVC_BasicTutorials.Models'を追加する必要はありませんでしたが、 VSので私はそれを追加しました。 あなたのご支援ありがとうございます。私のコメントに基づいてあなたの答えを少し調整すれば、私はそれを受け入れて投票することができます。再度、感謝します –

関連する問題