2013-06-01 11 views
10

私は以下の顧客オブジェクトを表示するビューを持っています。'モデル'が 'System.Web.Mvc.WebViewPage'と矛盾します<TModel>。モデル

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

そして

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

を表示するために顧客を返すためのコントローラを有し、かつ最終的に見るには、すべての罰金だ、

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

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

です。しかし、@ Html.Partial( "Address"、Model)の宣言「System.Web.Mvc.WebViewPage.Model」のエラーと「モデル」の競合が発生しています。以前は多くのプロジェクトで同じことをしていましたが、問題。

私はさらなる手がかりがありません。

誰かがこの問題を解決するのに手伝ってください。

私はこの種のエラーに関する多くの記事を見てきました。しかし、それらは@ Html.Partial()ではありませんでした。

おかげ&よろしく、

Saravanakumar R.

答えて

30

私は問題を解決してきました。視聴者に感謝します。

私の見解ではどこかで使用していましたモデル=>モデルです。そのモデルはモデル=>モデルである必要があります。

+0

私はちょうど同じ問題を持っていました、なぜこれが問題なのか...首都を変えることは私のためにこれを修正しましたが、私は理由を知りたいです。 – Waller

+0

モデルはIViewのプロパティです。ここでmodelはコントローラアクションから返されるデータ(モデル)の参照です。 :-) – Sravan

0

ModelはタイプCustomerのではなく、タイプのあなたの部分でAddressです。あなたはAddressInfoプロパティに渡すAddressAddress.cshtmlにモデルタイプを変更し、部分的に呼び出しを変更する必要があります。

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

あなたのビューのコードは次のようになります。

[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

返信いただきありがとうございますが、私はTryUpdateModelの値が必要なのでAddress.cshtmlモデルをAddressに変更できません。 – Sravan

+0

'CityInfo'と' RegionInfo'が 'Address'のプロパティで' Customer'ではないので 'Address'に変更する必要があります – levelnis

+0

なぜ' TryUpdateModel'と言いましたか?手動でモデル結合をしようとしていますか?それは自動でなければなりません – levelnis