2013-02-20 17 views
0

如何訪問我的控制器中我的視圖的下拉列表的值?如何訪問我的控制器中我的視圖的下拉列表的值?

var typeList = from e in db.Rubrics where e.DepartmentID == 2 select e; 
var selectedRubrics = typeList.Select(r => r.Category); 
IList <String> rubricsList = selectedRubrics.ToList(); 
IList<SelectListItem> iliSLI = new List<SelectListItem>(); 
SelectListItem selectedrubrics = new SelectListItem(); 
selectedrubrics.Text = "Choose a category"; 
selectedrubrics.Value = "1"; 
selectedrubrics.Selected = true; 
iliSLI.Add(selectedrubrics); 
for(int i = 0;i<rubricsList.Count();++i) 
{ 
    iliSLI.Add(new SelectListItem() { 
     Text = rubricsList[i], Value = i.ToString(), Selected = false }); 
} 
ViewData["categories"] = iliSLI; 

在我看來,這正常顯示的下拉值:

@Html.DropDownList("categories") 

然後在我的控制,我使用FormCollection這樣的:

String[] AllGradeCategories = frmcol["categories"].Split(','); 

當我把一個斷點在這裏,我在AllGradeCategories中得到1的數組。我究竟做錯了什麼?

更多: 這是我開始形式:

@using (Html.BeginForm("History", "Attendance", 
    new {courseID = HttpContext.Current.Session ["sCourseID"] }, 
    FormMethod.Post, new { @id = "formName", @name = "formName" })) 
    { 
     <td> 
     @Html.TextBoxFor(modelItem => item.HomeworkGrade, new { Value = "7" }) 
     @Html.ValidationMessageFor(modelItem => item.HomeworkGrade) 
     </td> 
     <td> 
     @Html.TextBoxFor(modelItem => item.attendanceCode, new { Value = "1" }) 
     @Html.ValidationMessageFor(model => model.Enrollments.FirstOrDefault().attendanceCode) 
     </td> 
     <td> 
     @Html.EditorFor(modelItem => item.classDays) 
     </td> 
     <td> 
     @Html.DropDownList("categories") 
     </td> 
    } 

我控制器簽名:

public ActionResult ClassAttendance(InstructorIndexData viewModel, int id, FormCollection frmcol, int rows, String sTeacher, DateTime? date = null) 

組織編寫 試過,但儘管它似乎變得貼的我還是不明白隱藏字段或類別參數中列表的值。

   @Html.Hidden("dropdownselected1"); 
    @Html.DropDownList("categories",ViewBag.categories as SelectList, new { onchange = "changed" }) 

       </td> 


    $(function() { 


    $("#dropdownselected1").val($("#categories").val()); 

    }); 
+0

請分享您的更多視圖(特殊形式)和您的行動方法簽名。我們可以理清這一點。 – 2013-02-20 04:29:10

+0

我加入了我原來的帖子。 – CloudyKooper 2013-02-20 04:48:07

+0

這有助於。我沒有看到你的模型的定義,它是如何發送到查看,或者它如何被約束來查看 – 2013-02-20 05:02:05

回答

0

我最終創建了一個ViewModel來處理帶有關聯分部視圖的下拉列表。然後在控制器中,我使用FormCollection()訪​​問列表的值。

0

如果你正在尋找從下拉列表訪問選定的值,使用隱藏字段,重新填充該字段的onChange上()JavaScript的下拉列表中的事件。

but you can use normal 
@Html.Hidden("dropdownselected1"); 


@Html.DropDownList("categories",new { onchange ="changed();"} 

function changed() 
{ 
    $("#hiddenfieldid").val($("#dropdownlistid").val()); 

} 

應該做的。

+0

我的下拉列表在ViewData中沒有直接綁定到模型中,所以沒有隱藏字段。 – CloudyKooper 2013-02-20 05:21:36

+0

試過:@ Html.DropDownList(「categories」,new {onchange =「changed();」})...有錯誤消息,沒有DropDownList的定義。 – CloudyKooper 2013-02-20 21:37:10

+0

對不起,請確保您已將Jquery插入頁面,或使用正常的document.getelementbyid(「xyz」)。value – 2013-02-21 04:25:20

相關問題