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)

編集2これを試しましたが、投稿されたようですが、非表示フィールドまたはカテゴリパラメータのリストの値を取得できません。

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

                 </td>


  $(function () {


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

  });
4

2 に答える 2

0

ドロップダウンリストから選択した値にアクセスする場合は、非表示のフィールドを使用して、ドロップダウンリストのonChange()javascriptイベントでそのフィールドに再入力します。

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


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

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

}

する必要があります。

于 2013-02-20T04:45:58.257 に答える
0

最終的に、関連する部分ビューを含むドローダウンリストのみを処理するViewModelを作成しました。次に、コントローラーで、FormCollection()を使用してリストの値にアクセスしました。

于 2013-02-22T21:04:39.690 に答える