2011-12-31 18 views
0

モデルクラスのオブジェクトを渡していますが、このエラーが発生しました。 "辞書に渡されるモデルアイテムのタイプはです。 'System.Collections.Generic.List`1 [ MvcApplication1.Models.ResturantReviews] 'が必要ですが、この辞書には' MvcApplication1.Models.ResturantReviews 'タイプのモデルアイテムが必要です。編集のためにデータを渡す際にエラーが発生しました

マイModelクラス:

namespace MvcApplication1.Models{ 
public class ResturantReviews 
{ 

     public int ReviewId { get; set; } 
     public int Rating { get; set; } 
     public string ReviewBody { get; set; } 
     public Resturant Resturant { get; set; } 

} 

}

私のアクションコード:

public ActionResult Edit(int Id) 
    { 
     //var review = FoodDB.review; 
     ResturantReviews obj = new ResturantReviews { 
      ReviewId = 2, 
      Rating = 9, 
      ReviewBody = "Test Sarina is a good resturant for continantal food", 
      Resturant = new Resturant 
      { 
       ResturantId = 1, 
       ResturantAddress = "Commercial area", 
       ResturantName = "Sarina Hotel" 

      } 
     }; 



     return View(obj); 
    } 

は親切に私が間違っている私を案内し、ここに私のコードです ビューの

マイコード:

@model MvcApplication1.Models.ResturantReviews 

@{ 
    ViewBag.Title = "Edit"; 
} 

<h2>Edit</h2> 

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script> 

@using (Html.BeginForm()) { 
    @Html.ValidationSummary(true) 
    <fieldset> 
     <legend>ResturantReviews</legend> 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.ReviewId) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.ReviewId) 
      @Html.ValidationMessageFor(model => model.ReviewId) 
     </div> 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.Rating) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.Rating) 
      @Html.ValidationMessageFor(model => model.Rating) 
     </div> 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.ReviewBody) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.ReviewBody) 
      @Html.ValidationMessageFor(model => model.ReviewBody) 
     </div> 

     <p> 
      <input type="submit" value="Save" /> 
     </p> 
    </fieldset> 
} 

<div> 
    @Html.ActionLink("Back to List", "Index") 
</div> 

答えて

4

編集コントローラのアクションは、(あなたの質問に示すように)ResturantReviewsの単一のインスタンスを渡し、ビューが強くので、これは例外をスローしてはいけません@model ResturantReviewsに型付けされます。コードは正しいようです。

だから、最大で簡略化することで絞込みを試みることができる:

public ActionResult Edit(int Id) 
{ 
    var model = new ResturantReviews(); 
    return View(model); 
} 

Edit.cshtmlビュー:

@model ResturantReviews 
@Html.BeginForm() 
{ 
    <p> 
     <input type="submit" value="Save" /> 
    </p>  
} 

これが100%に動作するはずです。その後、機能を追加することができます。

関連する問題