2009-06-24 45 views
0

我ViewModel類(ItemViewModel.cs)看起來像這樣:麻煩路過視圖模型來管窺

公共類ItemViewModel {

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

}

視圖有此代碼定義在其中(我拿出了一些其他的案例線,只是爲了展示其中的一個例子):

<%@ 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看起來像這樣:

<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,但最初傳遞給整個ItemViewModel實例需要在p我視圖。因爲我需要在該foreach中使用Pers以及能夠引用Items。所以我嘗試的是將ItemViewModel類實例的Pers屬性設置爲foreach中的當前p值。然後嘗試發送整個模型(現在我已經在屬性中設置了Pers),該模型的類型爲ItemViewModel,以便我現在可以在該對象上使用Pers屬性,並且仍然能夠引用已填充的Items屬性當它擊中視圖。

所以頁面呈現時,我得到:

System.NullReferenceException:對象不設置到對象的實例。 這條線:

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

到目前爲止,我不成功的,因爲我仍然獲得的財產Pers的空引用錯誤,當我嘗試使用ITemViewModel在我的局部視圖。

回答

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..forgot來添加我已經擁有的。 – PositiveGuy 2009-06-24 19:20:34

0

天哪,我設置屬性錯誤。解決。咄。