2010-02-21 23 views
2

MVC RC 2 docs,我們發現:ASP.NET MVC 2 RC:如何使用EditorFor爲List <>提供正確的名稱屬性?

基於表達式的助手是渲染輸入元素生成當表達式包含數組或集合索引正確的名稱屬性。例如,Html.EditorFor(m => m.Orders [i])爲列表中的第一個訂單呈現的名稱屬性的值將爲Orders [0]。

任何關心鏈接C#視圖代碼的示例(使用列表,其結果可以綁定回模型後)?

只是作爲參考,我用下面的代碼來驗證模型結合正確往返。它只是顯示允許更改的視圖,然後在提交表單時顯示帶有編輯數據的視圖。

[HandleError] 
public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     var myStudents = new List<Student>(); 

     myStudents.Add(new Student { Name = "Harry" }); 
     myStudents.Add(new Student { Name = "Tom" }); 
     myStudents.Add(new Student { Name = "Richard" }); 
     var myClass = new Classroom {Students = myStudents}; 

     return View(myClass); // EditorFor() 
    } 

    [HttpPost] 
    public ActionResult Index(Classroom myClass) 
    { 
     return View("IndexPost", myClass); // DisplayFor() 
    } 
+0

呃,問題是什麼? – Hogan 2010-02-21 22:35:33

+0

EditorForFor現在支持數組和集合,以便索引是輸入html標記的id的一部分。什麼C#代碼可以顯示如何使用它,特別是如果您使用List <>並且您希望數據模型綁定回原始對象? – 2010-02-21 23:08:13

+0

該示例顯示了一個包含學生列表的課堂對象。我創建了一個課堂模板和一個學生模板,但想知道將什麼C#代碼放置在課堂模板中以使用EditorFor呈現學生,以便當我發佈時,它將模型綁定回myClass對象。 – 2010-02-21 23:19:25

回答

1

此代碼:

<% for (int count = 0; count < Model.Students.Count; count++) 
    {            %><%= 
     Html.EditorFor(m => m.Students[count])  %><% 
    } 
%> 

渲染輸出:

<input class="text-box single-line" id="Students_0__Name" name="Students[0].Name" type="text" value="Harry" /> 
<input class="text-box single-line" id="Students_1__Name" name="Students[1].Name" type="text" value="Tom" /> 
<input class="text-box single-line" id="Students_2__Name" name="Students[2].Name" type="text" value="Richard" /> 

當我張貼的內容,顯示是這樣的(因爲我有一個Student.ascx):

<table> 
    <tr><td><span>Harry</span> </td></tr> 
    <tr><td><span>Tom</span> </td></tr> 
    <tr><td><span>Richard</span> </td></tr> 
</table> 

但僅此而已(我認爲)。下一個問題是如何擺脫這些name =「」標籤。

相關問題