2013-06-01 32 views
10

Ich habe eine Ansicht, um die folgenden Kundenobjekt anzuzeigen.'Model' Konflikte mit der Deklaration 'System.Web.Mvc.WebViewPage <TModel> .Model

public Class Customer 
{ 
    public long Id { get; set; } 
    public string Name { get; set; } 
    public Address AddressInfo { get; set; } 
} 

public class Address 
{ 
    public string Details { get; set; } 
    public City CityInfo { get; set; } 
    public Region RegionInfo { get; set; } 
} 

und einen Regler Mit den Kunden zurück die Aussicht ist, zum Ansehen

public ActionResult GetCustomer(long Id) 
{ 
    return View("Customer",GetCustomer(Id)); 
} 

Und schließlich

[Customer.cshtml] 
@model Customer; 
Name: @Model.Name 
Address Details: @Html.Partial("Address",Model) 

[Address.cshtml] 
@model Customer; 
@Model.CityInfo.Name, @Model.RegionInfo.Name 

Alles scheint in Ordnung. Aber ich bekomme "Model" -Konflikte mit der Deklaration "System.Web.Mvc.WebViewPage.Model" -Fehler auf @Html.Partial ("Address", Model) Ich hatte das selbe schon mal in vielen Projekten gemacht und habe das nicht bekommen Problem.

Ich habe keine Ahnung von weiteren Verfahren.

Könnte mir bitte jemand helfen, dieses Problem zu lösen.

Ich habe viele Beiträge in Bezug auf diese Art von Fehler gesehen. Aber das war nicht mit der @ Html.Partial().

Dank & Grüße,

Saravanakumar R.

Antwort

30

ich das Problem gelöst habe. Danke für die Zuschauer.

Das Problem war In meiner Ansicht war ich irgendwo Model => Model. Es sollte Modell => Modell sein.

+0

Ich hatte gerade das gleiche Problem, jede Idee, WARUM dies das Problem ist ... Das Ändern der Hauptstädte hat dies für mich behoben, aber ich habe Liebe zu wissen, warum. – Waller

+0

Modell ist eine Eigenschaft des IView. wobei Modell eine Referenz der Daten (Modell) ist, die wir von der Controller-Aktion zurückgeben. :-) – Sravan

0

Die Model ist vom Typ Customer statt vom Typ Address in Ihrem Teil. Sie benötigen den Modelltyp in Address.cshtml-Address ändern und den Anruf an den teilweise in der AddressInfo Eigenschaft passieren ändern:

@Html.Partial("Address", Model.AddressInfo) 

Ihre Ansicht Code wird:

[Customer.cshtml] 
@model Customer; 
Name: @Model.Name 
Address Details: @Html.Partial("Address",Model.AddressInfo) 

[Address.cshtml] 
@model Address; 
@Model.CityInfo.Name, @Model.RegionInfo.Name 
+0

Vielen Dank für Ihre Antwort, aber ich kann das Address.cshtml-Modell nicht in Adresse ändern, da ich die Werte in TryUpdateModel brauche. – Sravan

+0

Sie müssen es in "Adresse" ändern, da 'CityInfo' und' RegionInfo' Eigenschaften von 'Adresse' sind, nicht' Kunde' – levelnis

+0

Warum nennen Sie 'TryUpdateModel'? Versuchen Sie, die Modellbindung manuell durchzuführen? Es sollte automatisch – levelnis