2009-06-24 13 views
0

私のViewModelクラス(ItemViewModel.cs)は次のようになります。トラブル

{

public ItemViewModel(xxx.Product product) 
{ 
    this.product = product; 
} 

private readonly xxx.xxx.Product product; 
private readonly Pers pers; 
private readonly Item item; 

public xxx.xxx.Product Product 
{ 
    get{ return product;} 
} 

public Item Item 
{ 
    get { return item; } 
} 

public ItemList Items 
{ 
    get { return product.Items; } 
} 

public Pers Pers 
{ 
    get { return pers; } 
    set { value = pers; } 
} 

public PersList PersList 
{ 
    get { return product.PersList; } 
} 

}

ビューは、このコードを持っているItemViewModel

パブリッククラスで定義されています(私はいくつかのケースラインを取り出し、例としてそのうちの1つを示しています):

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/MasterPages/Item.Master" Inherits="System.Web.Mvc.ViewPage<xxx.ViewModels.ItemViewModel>" %> 

    <% foreach (Pers p in Model.Perslist) 
     { 
      switch(p.DispType) 
      { 
       case DisType.Dropdown: 
        Model.Pers = p; 
        Html.RenderPartial("~/Views/Shared/Controls/Custom/PForm/DropDown.ascx",*Model); 
        break; 
      } 
     } 
    %> 

そしてれるrenderPartialは次のようになります。私がいる問題やジレンマは、私だけではなく、foreachのから、Pを必要とするが、もともと私に渡された全体ItemViewModelインスタンスである

<fieldset> 
    <div class="xxx"> 
     <span class="xxx">*</span><label><%=Model.Pers.Name %></label> 
     <p class="xxx"><%=Model.Pers.Info %></p> 
    </div> 
    <div class="formField"><% Html.DropDownList(Model.Pers.Name, new SelectList(Model.Items[0].DropdownItems));%></div> 
</fieldset> 

表示します。私はそのforeachでPersを使用するだけでなく、Itemsを参照できるようにする必要があるからです。だから私が試みたのは、ItemViewModelクラスのインスタンスのPersプロパティをforeachの現在のpに設定することです。次に、そのオブジェクトにプロパティPersを使用できるように、ItemViewModel型のPersをそのプロパティに設定したモデル全体を送信しようとしましたが、既に作成されたItemsプロパティを参照することもできますそれがビューをヒットしたとき。ページのレンダリング時に

は、だから私は得る:

System.NullReferenceException:オブジェクト参照がオブジェクトインスタンスに設定されていません。このラインの :私は私の部分図でITemViewModelを使用しようとすると、私はまだプロパティペールスにnull参照エラーが表示されますので、

<span class="xxx">*</span><label><%=Model.Pers.Name %></label> 

は、これまでのところ私はunsuccesfulです。

答えて

0

あなたの部分ビューファイルは、HTML上で、この行必要があるため、これは次のようになります。だから、これはあなたの部分図がどのように見えるべきかである

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<xxx.ViewModels.**ItemViewModel**>" %> 

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<xxx.ViewModels.**ItemViewModel**>" %> 
<fieldset> 
    <div class="xxx"> 
     <span class="xxx">*</span><label><%=Model.Pers.Name %></label> 
     <p class="xxx"><%=Model.Pers.Info %></p> 
    </div> 
    <div class="formField"><% Html.DropDownList(Model.Pers.Name, new SelectList(Model.Items[0].DropdownItems));%></div> 
</fieldset> 
+0

実際に私は、私のパーシャルビューでは、ItemViewModel型を持っています。私が既にこれを持っていることを追加してください。 – PositiveGuy

+0

私はパーシャルビューの先頭にこれを持っていました:<%@ Control Language = "C#" Inherits = "System.Web.Mvc.ViewUserControl "%> – PositiveGuy

0

良い神を、私はプロパティを設定します違う。解決されました。デュ。