2012-12-07 96 views
1

我有下一個問題,關於在MVC中添加項目到列表的正確方法。ASP.NET MVC - 將多個項目添加到列表

比方說,我得到了以下型號:

public class Student 
{ 
    public String Name { get; set; } 
    public List<Lesson> Lessons { get; set; } 
} 

現在我在學生中創建視圖中,用戶可以添加多個課。視圖看起來的方式是有一個下拉列表,您可以在其中選擇一個課程和一個按鈕來添加新的下拉菜單。這樣一個人可以將多個課程添加到Lessons變量中。

現在,我嘗試了不同的方法很多,但從來也沒有過正確的,因爲我不喜歡在視圖中有這樣的:

@Html.DropDownListFor(model => model.Lessons[0].Id, new SelectList(...), "Select lesson") 

而且將0改爲1..2等與jquery或者如此。

你在哪些視圖中動態添加多個項目的方法是什麼?

回答

2

你應該看看定義編輯模板:

如果你正確撰寫你的模板,asp.net會使控制與類似的名稱:

Lesson[0]_Title 

UPDATE:方法如下:

在views \共享調用EditorTemplates中創建一個文件夾 然後在這裏創建一個類型爲Lesson的模型的局部視圖。確保你(如果你不使用剃刀或ASCX)

然後你就可以做到把這個局部視圖「Lesson.cshtml」 ......

@Html.EditorFor(model => model.Lessons) 

...和asp.net會奇蹟般地弄清楚因爲Lessons是一個IEnumerable課程,所以它應該循環併爲每一個渲染一個編輯器。很簡約!

一些鏈接:

http://forums.asp.net/t/1846290.aspx/1?Editor+template+of+type+IEnumerable+SelectListItem+with+MVC+area

+0

這將是一個很好的解決方案。儘管我們確實需要正確的模板。如果你能找到你正在談論的鏈接,那將是非常棒的! – Julian

+0

實際上我正在努力......我要看看我能不能快速剔除自己的例子...... –

+0

感謝您將我指向EditorTemplates。雖然如果有新的學生成立,我們不知道他會遵循多少課程。所以我們應該能夠爲課程動態添加新的編輯器。 – Julian