2013-06-01 5 views
10

Mam widok, aby wyświetlić poniższy obiekt klienta."Model" jest w konflikcie z deklaracją "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; } 
} 

i mającą kontroler do zwrotu Klientowi Zobacz

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

I wreszcie widok jest,

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

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

Wszystko wydaje się w porządku. Ale pojawia się konflikt "Model" z deklaracją błędu "System.Web.Mvc.WebViewPage.Model" na @Html.Partial ("Adres", Model) Zrobiłem to samo wcześniej w wielu projektach i nie otrzymałem problem.

Nie mam pojęcia o dalszych krokach.

Czy ktoś mógłby mi pomóc rozwiązać ten problem?

Widziałem wiele postów dotyczących tego rodzaju błędu. Ale nie były one z @ Html.Partial().

Dzięki & Pozdrowienia,

Saravanakumar R.

Odpowiedz

30

mam rozwiązany. Dzięki za widzów.

Problem był w moim widoku użyłem gdzieś Model => Model. Powinien to być model model => model.

+0

Po prostu miałem ten sam problem, każdy pomysł DLACZEGO jest to problem ... Zmiana stolic naprawiła to dla mnie, ale chciałbym wiedzieć dlaczego. – Waller

+0

Model jest własnością IView. gdzie model jest odniesieniem do danych (model), które wracamy z działania kontrolera. :-) – Sravan

0

Model jest typu Customer zamiast typu Address w twojej częściowe. Trzeba zmienić typ modelu w Address.cshtml do Address i zmienić wezwanie do częściowego przejść w nieruchomości AddressInfo:

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

Kod widok staje:

[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

Dziękuję za odpowiedź, ale nie mogę zmienić modelu Address.cshtml na adres, ponieważ potrzebuję wartości w TryUpdateModel. – Sravan

+0

Musisz zmienić go na 'Adres', ponieważ' CityInfo' i 'RegionInfo' są właściwościami' Adresu ', a nie' Klienta' – levelnis

+0

Dlaczego mówisz o 'TryUpdateModel'? Czy próbujesz ręcznie powiązać model? To powinno być automatyczne – levelnis