2012-03-26 56 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 2012-03-26 22:10:47

回答

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

看起來您正在傳遞與期望值不同的類型。從您的角度來看,我可以預見到該視圖預計會出現「OFFICE」類型的對象。您確定您傳遞給部分視圖調用的模式是相同類型嗎?還是你通過了一個辦公室名單?