2013-03-04 3 views
1

내 모델에는 실제로 다른 모델에서 가져온 항목 목록이 있습니다.내 모델의 목록에있는 항목을 기반으로 한 필드 표시

목록에있는 각 항목의 각 속성에 대해 TextBoxFor (사용하지 않도록 설정)를 표시하려고합니다. 종류는 Cart 상자와 같습니다.

은 여기 내 모델의 일부 :

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

여기 내 시야의 일부 :

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

기본적으로 내 다른 개체 (ObjOrderDetailInfo) 수량, 가격 및 다른 객체와 같은 속성이 있습니다 . 나는 항상 각 속성에 대해 textboxfor 또는 displayfor를 표시하려고합니다. 하지만 내가이 일을 어떻게 할 수 있는지에 관해서는 단서가 없다.

대단히 감사합니다! 이처럼 간단

답변

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

: ObjOrderInfo에 대한보기에서

3), 그런 짓을! 나는 이것을 시도 할 것이다. 감사! – hsim

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)를 참조하십시오. –

0

1) "ObjOrderDetailInfo.cshtml"라는보기를 작성합니다. 이보기는 ObjOrderDetailInfo에 대해 강하게 입력해야하며,보기에서 ObjOrderDetailInfo을 편집 할 수있는 컨트롤을 입력해야합니다 (원하는 경우 "편집"비계 템플릿 사용).

2)보기/공유/EditorTemplates 폴더에 위보기를 배치하십시오. 아주 재미있는

@Html.EditorFor(model => model.m_ListObjOrderDetail) 
관련 문제