2013-06-01 2 views
10

Ho una vista per visualizzare il seguente oggetto cliente.'Modello' è in conflitto con la dichiarazione 'System.Web.Mvc.WebViewPage <TModel> .Modello

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

e con un controller di restituire il cliente di visualizzare

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

E infine la vista è,

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

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

Tutto sembra bene. Ma sto ottenendo "Model" in conflitto con la dichiarazione "System.Web.Mvc.WebViewPage.Model" errore su @ Html.Partial ("Indirizzo", Modello) Avevo fatto lo stesso prima in molti progetti e non avevo il problema.

Non ho idea di proseguire ulteriormente.

Qualcuno potrebbe aiutarmi a risolvere questo problema.

Ho visto molti post su questo tipo di errore. Ma quelli non erano con @ Html.Partial().

Grazie & saluti,

Saravanakumar R.

risposta

30

ho risolto il problema. Grazie per gli spettatori.

Il problema era Nella mia vista Stavo usando da qualche parte Modello => Modello. Dovrebbe essere il modello => modello.

+0

Ho appena avuto lo stesso problema, qualsiasi idea PERCHÉ questo è il problema ... Cambiare le maiuscole ha risolto questo per me, ma mi piacerebbe sapere perché. – Waller

+0

Il modello è una proprietà di IView. dove il modello è un riferimento dei dati (modello) restituiamo da Controller Action. :-) – Sravan

0

La Model è di tipo Customer piuttosto che di tipo Address in parziale. È necessario modificare il tipo di modello in Address.cshtml-Address e modificare la chiamata alla parziale passare nella proprietà AddressInfo:

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

Il codice vista diventa:

[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

Grazie per la risposta, ma non posso cambiare il modello Address.cshtml in Indirizzo poiché ho bisogno dei valori in TryUpdateModel. – Sravan

+0

Devi cambiarlo in 'Indirizzo' perché' CityInfo' e 'RegionInfo' sono proprietà di' Indirizzo' non 'Cliente' – levelnis

+0

Perché stai citando' TryUpdateModel'? Stai cercando di eseguire il binding del modello manualmente? Dovrebbe essere automatico – levelnis