我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在我的局部視圖。
實際上,我確實在部分視圖中使用了類型ItemViewModel..forgot來添加我已經擁有的。 – PositiveGuy 2009-06-24 19:20:34