2013-08-06 43 views
0

我正在使用MVC 4和Entity Framework在VB.Net中創建一個Web應用程序。我想提交一次創建多個實體的表單。舉例來說,如果我有簡單的實體...VB MVC 4從表單提交創建多個實體

Public Class Employee 
    Public Property EmployeeID As Integer 
    Public Property Name As String 
End Class 

在我看來,我希望能夠把創建多個員工的用戶一次投入,然後張貼所有這些數據的回控制器行動。喜歡的東西...

@Using Html.BeginForm("AddEmployees") 
    here is input for first employee 
    here is input for second employee 
    etc... 
End Using 

這將是巨大的,如果我能在我的控制器行動說......

<HttpPost()> 
Function AddEmployees(SomeCollection As Collection(Of Employee)) As ActionResult 
    For Each item in SomeCollection 
     do stuff with data... 
    Next 
    Return RedirectToAction("Index") 
End Function 

我應該如何正確發佈數據的這個塊,我如何能得到它我的控制器?我在C#中查看related source,但無法複製它。

回答

1

您只需要爲儘可能多的員工重複員工輸入字段即可。

Name: <input type="text" name="[0].Name" value="" /><br> 
Name: <input type="text" name="[1].Name" value="" /><br> 
Name: <input type="text" name="[2].Name" value="" /><br> 
Name: <input type="text" name="[3].Name" value="" /><br> 

一旦被引用,模型綁定將負責填充Employees列表並設置Name屬性。

我會推薦使用類似jQuery的東西,讓一個按鈕給用戶選項以動態添加更多的字段到屏幕上。

+0

所以你建議一個數組?名稱字段對應於屬性。我如何確保我的控制器將這些識別爲員工實體? – ElliotSchmelliot

+0

模型綁定將能夠將發佈的項目綁定到集合。它會看到你提供了名爲'Name'的元素,並且看到Employee類型也有一個Name屬性。然後它會嘗試將數據導入該屬性。這裏是關於模型綁定到列表的一些信息:http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx –

+0

非常好,我想我有這個工作。最後一個問題:名稱字段被正確傳入,但不是EmployeeID。我得到一個空錯誤。這應該在我的數據庫中自動生成,因爲它是主鍵。 – ElliotSchmelliot