如何在 MVC 的视图部分中选择下拉列表值?

How to get selected Drop down list value in view part of MVC?

我想将选定的下拉列表值传递给我在 Controller 中使用的 Ajax 操作 Link。每次我将更改下拉列表值时。我希望相应的值传递给操作 link。 我需要在Ajax Action Link 中写什么????

下拉列表

<div class="form-group">
        @Html.DropDownListFor(model => model.ComponentId, ((List<string>)ViewBag.Cdll).Select(model => new SelectListItem { Text = model, Value = model }), "  -----Select Id-----  ", new { onchange = "Action(this.value);", @class = "form-control" })
     </div>

Ajax 操作 Link

 <div data-toggle="collapse">
           @Ajax.ActionLink("Accessory List", "_AccessoryList", new { ComponentId = ???? }, new AjaxOptions()
         {
            HttpMethod = "GET",
            UpdateTargetId = "divacc",
            InsertionMode = InsertionMode.Replace
         })
        </div>

控制器

 public PartialViewResult _AccessoryList(string ComponentId)
  {
     List<ComponentModule> li = new List<ComponentModule>();
     // Code
     return PartialView("_AccessoryList", li);
  }

这是一个新的post。我做的下拉菜单和你有点不同,所以我向你展示我是如何做的。当您问要传递什么时,我正在向您展示如何传递 'component' 的下拉列表。我还展示了如何从 ajax 返回页面。

Controller/Model:

//You can put this in a model folder
public class ViewModel
{
    public ViewModel()
    {
        ComponentList = new List<SelectListItem>();
        SelectListItem sli = new SelectListItem { Text = "component1", Value = "1" };
        SelectListItem sli2 = new SelectListItem { Text = "component2", Value = "2" };
        ComponentList.Add(sli);
        ComponentList.Add(sli2);
    }

    public List<SelectListItem> ComponentList { get; set; }
    public int ComponentId { get; set; }
}

public class PassDDLView
{
    public string ddlValue { get; set; }
}

public class HomeController : Controller
{
    [HttpPost]
    public ActionResult PostDDL(PassDDLView passDDLView)
    {
        //put a breakpoint here to see the ddl value in passDDLView
        ViewModel vm = new ViewModel();
        return Json(new
        {
            Component = "AComponent"
        }
        , @"application/json");
    }

    public ActionResult IndexValid8()
    {
        ViewModel vm = new ViewModel();
        return View(vm);
    }

查看:

@model Testy20161006.Controllers.ViewModel
<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>IndexValid8</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
    <script type="text/javascript">
        $(function () {
            $("#btnClick").click(function () {
                var PassDDLView = { ddlValue: $("#passThis").val() };
                $.ajax({
                    url: '@Url.Action("PostDDL")',
                    type: 'POST',
                    data: PassDDLView,
                    success: function (result) {
                        alert(result.Component);
                    },
                    error: function (result) {
                        alert('Error');
                    }
                });
            })
        })
    </script>
</head>
<body>
    <div class="form-group">
        @Html.DropDownListFor(m => m.ComponentId,
                     new SelectList(Model.ComponentList, "Value", "Text"), new { id = "passThis" })
        <input type="button" id="btnClick" value="submitToAjax" />
    </div>
</body>
</html>