2016-03-19 9 views
3

強く型付けされたビューを作成しています。私のモデルはRestaurantReview.csと呼ばれ、次のようになりますされています.net厳密に型指定されたビューオブジェクトのインスタンスにモデルが設定されていません

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 

namespace OdeToFood.Models 
{ 
    public class RestaurantReview 
    { 
     public int Id { get; set; } 
     public string Name { get; set; } 
     public string City { get; set; } 
     public string Country { get; set; } 
     public int Rating { get; set; } 
    } 
} 

私はこのようになりますされ、これに基づいて、厳密に型指定されたリストのモデルをVisual Studioのを作成していた:私は実行すると

@model IEnumerable<OdeToFood.Models.RestaurantReview> 

@{ 
    ViewBag.Title = "Index"; 
} 

<h2>Index</h2> 

<p> 
    @Html.ActionLink("Create New", "Create") 
</p> 
<table> 
    <tr> 
     <th> 
      @Html.DisplayNameFor(model => model.Name) 
     </th> 
     <th> 
      @Html.DisplayNameFor(model => model.City) 
     </th> 
     <th> 
      @Html.DisplayNameFor(model => model.Country) 
     </th> 
     <th> 
      @Html.DisplayNameFor(model => model.Rating) 
     </th> 
     <th></th> 
    </tr> 

@foreach (var item in Model) { 
    <tr> 
     <td> 
      @Html.DisplayFor(modelItem => item.Name) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.City) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.Country) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.Rating) 
     </td> 
     <td> 
      @Html.ActionLink("Edit", "Edit", new { id=item.Id }) | 
      @Html.ActionLink("Details", "Details", new { id=item.Id }) | 
      @Html.ActionLink("Delete", "Delete", new { id=item.Id }) 
     </td> 
    </tr> 
} 

</table> 

"@foreach(Model in var item)"という行にヌルポインタ例外があり、Modelオブジェクトを強調表示し、 "オブジェクト参照がオブジェクトのインスタンスに設定されていません"と述べています。

私はそれも書いていないので、このコードが間違っている可能性があることを理解していません。ここで何が起きてるの?

+0

を取得していないのだろうか?あなたのモデルはそこでインスタンス化されるべきです。 –

+0

あなたの 'コントローラ'はどのように見えますか? 'Home'コントローラからIEnumrable を渡しますか? – Ian

答えて

2

お客様のControllerの表示には、RestaurantReviewIEnumerableが渡されます。例:

public class HomeController : Controller { //suppose this is your Home 
    public ActionResult Index() { 
     IEnumerable<OdeToFood.Models.RestaurantReview> model; 
     model = from m in db.RestaurantReviews 
       ... //your query here 
       select m; 
     return View(model); //pass the model here 
    } 

このビューを返すコントローラのアクションコードを表示することができます次に、あなたはnull例外

+0

私は何をしたのか分かります。私はパラメータを「return view()」に含めるのを忘れていました。私はそれを「ビューを返す(モデル)」に変更したときに機能しました。ありがとう! – jimboweb

+0

@jimboweb素晴らしい! ;)はい、それは一般的に問題です... – Ian

2

Controller内でモデルを正しくインスタンス化していないようです。モデルが正しくDBから移入されなければならないしかし

public ActionResult Reviews() 
{ 
    var model = new List<OdeToFood.Models.RestaurantReview>(); 
    model.Add(new OdeToFood.Models.RestaurantReview { Name = "Test" }); 
    model.Add(new OdeToFood.Models.RestaurantReview { Name = "Test2" }); 

    return View(model); 
} 

:あなたはこれを試みることができる試験として

。あなたが役立つだろうコントローラコードを貼り付けることができる場合。

関連する問題