2012-03-26 5 views
0

부모 뷰에서없는 부분보기로드 할 수 있지만, 부모 뷰에서 부분 뷰를로드 할 때 사전에 전달 된 다음과 같은 오류내가 부모보기 및 부분적인 전망을

모델 항목을 가져 오기 'System.Data.Objects.DataClasses.EntityCollection`1 [RolMVC3.Models.OFFICE]'유형이지만이 사전에는 'RolMVC3.Models.OFFICE'유형의 모델 항목이 필요합니다.

부분보기 :

@model RolMVC3.Models.OFFICE 
     @Html.HiddenFor(model => model.IdOffice) 
     @Html.HiddenFor(model => model.IdSCampus) 
     <div class="editor-label"> 
      @Html.LabelFor(model => model.AddressOffice) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.AddressOffice) 
      @Html.ValidationMessageFor(model => model.AddressOffice) 
     </div> 

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

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

부모보기 :

@model RolMVC3.Models.CAMPUS_UNIVERSITY 

@{ 
    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) 

    <h2> @ViewBag.University.Name - @ViewBag.Campus.NameCity </h2> 

    <fieldset> 
     <legend>MODIFY OFFICE</legend> 

     @Html.HiddenFor(model => model.IdUniversidty) 

     @Html.HiddenFor(model => model.IdCityCampus) 

     @Html.HiddenFor(model => model.IdCampus) 

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

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

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

     <fieldset> 
     <legend>DATA</legend> 
     @Html.Partial("_Office", Model.OFFICE) 
     </fieldset> 
      <p> 
      <input type="submit" value="Save" /> 
     </p> 
    </fieldset> 
} 

컨트롤러 :

public ActionResult Edit() 
     { 
      decimal id; 
      id = (decimal)Session["Offi"]; 

      ViewBag.University = (from c in db.OFFICE 
            join s in db.CAMPUS_UNIVERSITY on c.IdCampus equals s.IdCampus 
            join u in db.UNIVERSIDTY on s.IdUniversity equals u.IdUniversity 
            where c.IdOffice == id 
            select u).Single(); 

      ViewBag.Campus = (from c in db.OFFICE 
          join s in db.CAMPUS_UNIVERSITY on c.IdCampus equals s.IdCampus 
          join ci in db.CIUDAD on s.IdCaityCampus equals ci.IdCity 
          where c.IdOffice == id 
          select ci).Single(); 

      OFFICE office = db.OFFICE.Single(c => c.IdOffice == id); 

      CAMPUS_UNIVERSITY campus_university = db.CAMPUS_UNIVERSITY.Single(s => s.IdSede == office.IdCampus); 


      return View(campus_university); 
     } 

축복

+0

'CAMPUS_UNIVERSITY' 모델 클래스를 게시하십시오. – nightshifted

답변

0

컨트롤러 코드

OFFICE office = db.OFFICE.Single(c => c.IdOffice == id); 
CAMPUS_UNIVERSITY campus_university = db.CAMPUS_UNIVERSITY 
             .Single(s => s.IdSede == office.IdCampus); 

을 가지고하지만 당신의보기 만 모델 CAMPUS_UNIVERSITY을 사용하고 있습니다. CAMPUS_UNIVERSITY.Office 속성은 EntityCollection<OFFICE>이고보기의 요구 사항은 Office과 일치하지 않습니다.

@foreach(var office in Model.OFFICE) 
{ 
    @Html.Partial("_Office", office) 
} 

또는 다른 실제로 Office 당신이 컨트롤러에서 만든

컨트롤러 (ADD)

ViewBag.Office = db.OFFICE.Single(c => c.IdOffice == id);   
을 사용하는 것입니다

하나의 솔루션은 모든 사무실을 표시하는 것입니다

보기 (변경)

@Html.Partial("_Office", ViewBag.Office) 
1

당신이 보여줄 수있는 RolMVC3.Models.OFFICE 및 CAMPUS_UNIVERSI TY 개체는 어떻게 생겼습니까? 나는 당신의 CAMPUS_UNIVERSITY 모델에 이상한 일이 일어나고 있다고 생각합니다. .OFFICE 필드가 OFFICE 개체로 단단하게 캐스팅 되었습니까? 아니면 열거 형입니까? 뷰에서 Model.OFFICE [0]을 전달하여이를 빠르게 테스트 할 수 있습니다.

0

기대하는 것보다 다른 유형을 전달하는 것처럼 보입니다. 귀하의 견해로는, 나는보기가 "사무실"유형의 물체를 기대하고 있다는 것을 알 수 없습니다. Partial View 호출에 전달할 모달이 동일한 유형인지 확인 하시겠습니까? 아니면 사무실리스트를 통과하고 있습니까?

관련 문제