2012-03-26 10 views
0

ich eine übergeordnete Ansicht und eine Teilansicht haben, aber wenn es versucht, die Teilansicht von der übergeordneten Ansicht die folgenden Fehler in das Wörterbuch übergabennicht Teilansicht Lasten aus der übergeordneten Ansicht

Das Modell Artikel erhalten zu laden ist vom Typ 'System.Data.Objects.DataClasses.EntityCollection`1 [RolMVC3.Models.OFFICE]', aber dieses Wörterbuch benötigt ein Modellelement vom Typ 'RolMVC3.Models.OFFICE'.

Teilansicht:

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

Elternansicht:

@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> 
} 

Controller:

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); 
     } 

Segen

+0

posten Sie bitte Ihre 'CAMPUS_UNIVERSITY' Modellklasse. – nightshifted

Antwort

0

Ihr Controller hat den Code

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

Aber Ihre Ansicht ist nur unter Verwendung des Modells CAMPUS_UNIVERSITY. Ich würde annehmen, dass die CAMPUS_UNIVERSITY.Office Eigenschaft eine EntityCollection<OFFICE> ist, die nicht die Anforderung der Ansicht von Office entspricht.

Eine Lösung ist es, alle Büros anzuzeigen:

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

oder das andere ist, um tatsächlich die Office Sie im Controller erstellt verwenden

-Controller (add)

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

Anzeigen (ändern)

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

Können Sie zeigen, was RolMVC3.Models.OFFICE und CAMPUS_UNIVERSI TY-Objekte sehen aus? Ich nehme an, Ihr CAMPUS_UNIVERSITY-Modell hat etwas Seltsames im Kopf. Wird das Feld .OFFICE eng als OFFICE-Objekt oder als Aufzählungszeichen gecastet? Sie könnten dies wahrscheinlich schnell testen, indem Sie Model.OFFICE [0] in der Ansicht übergeben.

0

Es sieht so aus, als ob Sie einen anderen Typ übergeben als erwartet. Aus Ihrer Sicht konnte ich feststellen, dass die Ansicht ein Objekt vom Typ "OFFICE" erwartet. Sind Sie sicher, dass das Modal, das Sie an den Aufruf der Teilansicht übergeben, vom gleichen Typ ist? Oder überholst du eine Liste von Ämtern?

Verwandte Themen