2011-12-31 4 views
0

편집을 위해 모델 클래스의 개체를 전달하려고했지만이 오류가 발생했습니다. "사전에 전달 된 모델 항목의 형식은 입니다. 'System.Collections.Generic.List`1 [ MvcApplication1.Models.ResturantReviews] '가 있지만이 사전에는'MvcApplication1.Models.ResturantReviews '유형의 모델 항목이 필요합니다. "편집 할 데이터를 전달할 때 오류가 발생했습니다.

내 모델 클래스 :

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 % 작동합니다. 그런 다음 기능을 추가 할 수 있습니다.

관련 문제