2013-03-04 69 views
1

在我的模型中,我實際上有一個來自另一個模型的項目列表。根據我的模型列表中的項目顯示字段

我想爲列表中每個項目的每個屬性顯示一個TextBoxFor(禁用),類似於購物車框。

這裏是我的模型的一部分:

public class ObjOrderInfo 
{ 
    (...) 
    public List<ObjOrderDetailInfo> m_ListObjOrderDetail { get; set; } 
} 

,這裏是我的部分觀點:

@using (Html.BeginForm()) 
{ 
    (...) 
    @foreach (var item in Model.m_ListObjOrderDetail) 
    { 
     (insert code here) 
    } 
} 

基本上我的其他對象(ObjOrderDetailInfo)具有類似數量,價格和其他對象屬性。我總是希望爲這些屬性中的每一個顯示一個文本框或一個顯示。但我無能爲力,我怎麼能這樣做......任何人都可以幫我解決這個問題嗎?

非常感謝!

回答

1
@using (Html.BeginForm()) 
{ 
    (...) 
    @for (var i = 0; i < Model.m_ListObjOrderDetail.Count; i++) 
    { 
     @Html.DisplayFor(x => x.m_ListObjOrderDetail[i].SomeProperty) 

     @Html.TextBoxFor(x => x.m_ListObjOrderDetail[i].SomeOtherProperty) 

     @Html.TextBoxFor(
      x => x.m_ListObjOrderDetail[i].YetAnotherProperty, 
      new { @readonly = "readonly" } 
     ) 
    } 
} 
+0

非常有趣!我會一起嘗試。謝謝! – hsim 2013-03-04 17:49:01

0

事情如此簡單應該工作:

@using (Html.BeginForm()) 
{ 
    <ul> 
    @foreach (var item in Model.m_ListObjOrderDetail) 
    { 
     <li>@Html.DisplayFor(m => item)</li> 
    } 
    </ul> 
} 
+1

儘管這可能適用於顯示目的,但我相信在需要用戶進行編輯時,它不起作用,如OP所述。你最終會得到一堆具有相同名稱的輸入元素。像Darin展示的那樣,定期執行'for'循環可以正確地與模型綁定到列表一起使用。有關更多詳細信息,請參見[this](http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx)。 – 2013-03-04 17:32:43

0

1)創建一個名爲 「ObjOrderDetailInfo.cshtml」 觀。這個視圖應該是ObjOrderDetailInfo的強類型,並且您需要放入控件以在視圖中編輯ObjOrderDetailInfo(如果需要,請使用「編輯」腳手架模板)。

2)將上述視圖放置在Views/Shared/EditorTemplates文件夾中。

3)您認爲對於ObjOrderInfo,做這樣的事情:

@Html.EditorFor(model => model.m_ListObjOrderDetail) 
相關問題