2011-11-01 79 views
0

我有一個mvc 3 vb.net應用程序,我需要爲其生成幾個viewbags ...我嘗試了下面的代碼,在viewbag名稱末尾放置一個變量每個循環,但它不會把它..它說:「對象變量或塊變量未設置。」當他在這使得通過循環第二遍viewbag.status(P)行... ...在每個循環中添加變量以查看包名稱

 Dim p As Integer = 0 
     For Each registrant In b 
      Dim _regi As attendance = registrant 
      Dim _status As New List(Of String) 
      If Not String.IsNullOrWhiteSpace(_regi.Completed_Class) Then 
       _status.Add(_regi.Completed_Class) 
      End If 
      _status.Add("--") 
      _status.Add("Absent") 
      _status.Add("Left Early") 
      _status.Add("Completed") 
      ViewBag._status(p) = _status 
      p = p + 1 
     Next 

和視圖看起來是這樣的:

@ModelTYPE List(Of xxxxxx.attendance) 
    @Code 
    ViewData("Title") = "Class Attendance Record" 
End Code 
@Using Html.BeginForm 
@<fieldset> 
<table> 
<tr> 
    <th>First Name</th> 
    <th>Last Name</th> 
    <th>Registrant ID</th> 
    <th>Course Status</th> 
    <th>Comments</th> 

</tr> 

@For r As Integer = 0 To Model.Count - 1 
    Dim i As Integer = r 
    @Html.HiddenFor(Function(m) m(i).id) 
    @Html.HiddenFor(Function(m) m(i).course_ref) 



    @<tr>   
    <td>@Html.DisplayFor(Function(m) m(i).firstName) 
     @Html.HiddenFor(Function(m) m(i).firstName) 
    </td> 

    <td>@Html.DisplayFor(Function(m) m(i).lastName) 
     @Html.HiddenFor(Function(m) m(i).lastName) 
    </td> 
    <td>@Html.DisplayFor(Function(m) m(i).reg_id) 
     @Html.HiddenFor(Function(m) m(i).reg_id) 
    </td> 

    <td>@Html.DropDownListFor(Function(m) m(i).Completed_Class, New SelectList(ViewBag._status(i))) 
     @Html.HiddenFor(Function(m) m(i).Completed_Class) 
    </td> 
    <td>@Html.TextBoxFor(Function(m) m(i).Comments, New With {.class = "AttenComment"}) 
     @Html.HiddenFor(Function(m) m(i).Comments) 
    </td> 
</tr> 
Next 
</table> 
<p><input type="submit" name="submit" /></p> 
</fieldset> 
End Using 

任何想法?

回答

0

我只是創建內部的viewbag我的觀點的每個環......所以這樣每次它經歷的循環來處理每一個項目表中,將產生的項目viewbag的下拉列表,以及..

0

根據您提供的代碼,ViewBag._status實際上持有List(Of List(Of String))。換句話說,每個`ViewBag._status(p)實際上都持有一個List(Of String),而_status本身就是一個列表或數組。

我想什麼才能解決你的問題,先做所有的工作,然後在循環結束後設置ViewBag._status

Dim statusLists As New List(Of List(Of String)) 
For Each registrant In b 
    Dim _regi As attendance = registrant 
    Dim _status As New List(Of String) 
    If Not String.IsNullOrWhiteSpace(_regi.Completed_Class) Then 
     status.Add(_regi.Completed_Class) 
    End If 
    _status.Add("--") 
    _status.Add("Absent") 
    _status.Add("Left Early") 
    _status.Add("Completed") 
    statusLists.Add(_status) 
Next 
ViewBag._status = statusLists 
+0

請參閱我的編輯上面我已經包括視圖,所以你有一個想法,爲什麼這些需要是獨特的。 – Skindeep2366

+0

好吧,那部分工作...問題是我如何讓那些從視圖袋索引號在 – Skindeep2366

+0

的下拉列表中我真的想到了它......我正在考慮努力進入它..我的觀點已經是工作的一部分 – Skindeep2366

相關問題