Asp.net mvc 3 如何访问视图的值';我的控制器中的下拉列表?

Asp.net mvc 3 如何访问视图的值';我的控制器中的下拉列表?,asp.net-mvc-3,html-select,Asp.net Mvc 3,Html Select,如何访问控制器中视图下拉列表的值 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

如何访问控制器中视图下拉列表的值

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;
然后在我的控制器中,我使用
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>
    }
编辑2 尝试了这个方法,但尽管它似乎被发布了,但我仍然无法获取隐藏字段中列表的值或categories参数

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

                 </td>


  $(function () {


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

  });
@Html.Hidden(“dropdownselected1”);
@Html.DropDownList(“categories”,ViewBag.categories作为SelectList,new{onchange=“change”})
$(函数(){
$(“#dropdownselected 1”).val($(“#categories”).val());
});

如果您希望访问下拉列表中的选定值,请使用隐藏字段并在下拉列表的onChange()javascript事件中重新填充该字段

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


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

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

}

应该这样做。

我最终创建了一个ViewModel来处理带有关联局部视图的drowdown列表。然后在控制器中,我使用FormCollection()访问列表的值。

请分享更多视图(esp表单)和操作方法签名。我们可以解决这个问题。我在原来的帖子中添加了。这很有帮助。我看不到您的模型的定义,它是如何发送到视图的,或者它是如何绑定到视图的。我将它发送到ViewData中的视图,如下所示:ViewData[“categories”]=iliSLI;我明白了。你决定在MVC中去掉M。你可以做到这一点,但这将是一个持续的头痛。最好了解如何将模型发送到视图并返回到控制器。我的下拉列表位于ViewData中,没有直接绑定到模型中,因此没有隐藏的字段。尝试:@Html.DropDownList(“categories”,new{onchange=“change();”})…收到错误消息,表示没有DropDownList的定义。抱歉,确保将Jquery插入页面,或者使用普通的document.getelementbyid(“xyz”).value
             @Html.Hidden("dropdownselected1");
   @Html.DropDownList("categories",ViewBag.categories as SelectList, new { onchange = "changed" })

                 </td>


  $(function () {


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

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


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

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

}