2011-02-14 5 views
0

여기 내 어려움은 "어떻게 파트를 수행합니까?"라고 표시된 부분을 수행하는 것입니다.바인딩 목록 난이도

namespace MvcApplication1.Models 
{ 
    public class Test { public Test() 
    { 
     Name = "Test"; 
     Subs = new List<Sub>(); 
     Subs.Add(new Sub { Num = 1, SubName = "A", Valid=false }); 
     Subs.Add(new Sub { Num = 2, SubName = "B" , Valid= true}); } 
     public string Name { get; set; } 
     public List<Sub> Subs { get; set; } 
    } 
    public class Sub { 
     public int Num { get; set; } 
     public string SubName { get; set; } 
     public bool Valid { get; set; } 
    } 

} 

보기 :

@model MvcApplication1.Models.Test 

@{ 
    View.Title = "Index"; 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 

@{ 
    var i = 0; 
    } 
} 

    <h2>Test2</h2> 
    @using (Html.BeginForm()) 
    {  
     <p>Test Name</p>@Html.EditorFor(m => m.Name) 
     foreach(var item in Model.Subs)  
     <p>Sub 1</p> 


     @Html.EditorFor(m => item[i].Num)<------ 
      @Html.EditorFor(m => item[i].SubName**)<------How to do this part?**  
     @Html.EditorFor(m => item[i++].Valid**) 



     <input type="submit" value="Save" /> 
    } 

컨트롤러 :

public ActionResult Index() 
    { 
     Test test = new Test(); 
     return View(test); 
    } 

    [HttpPost] 
    public ActionResult Index(Test test) 
    { 
     return View(test); 
    } 

} 
+0

하위 이름으로 표시 할 것으로 예상되는 내용을 설명하지 않았습니다. ??! 나는 그것을 깨닫기 전에 절반의 대답을 쓰는 것을 끝내었다. 필요한 것을 더 명확하게 설명해주십시오. – gideon

답변

0

당신은 편집기 템플릿을 사용자 정의 할 수 있습니다 :

@using (Html.BeginForm()) 
{  
    <p>Test Name</p> 
    @Html.EditorFor(m => m.Name) 
    @Html.EditorFor(m => m.Subs) 
    <input type="submit" value="Save" /> 
} 

와 해당 편집기 템플릿 내부

( ~/Views/Home/EditorTemplates/Sub.cshtml) :

@model MvcApplication1.Models.Sub 
@Html.EditorFor(m => m.Num) 
@Html.EditorFor(m => m.SubName) 
@Html.EditorFor(m => m.Valid)