C# 将下拉列表所选项目传递回控制器

C# 将下拉列表所选项目传递回控制器,c#,asp.net-mvc,C#,Asp.net Mvc,我正在尝试将下拉列表中的选定项传递回控制器以触发存储过程 填充列表的控制器: public ActionResult Activate() { var query = db.Certificates .Where(a => a.Active == "Y") .Select(cer => cer.CertificateNumber.Substring(0, 4)) .Di

我正在尝试将下拉列表中的选定项传递回控制器以触发存储过程

填充列表的控制器:

public ActionResult Activate()
{
    var query = db.Certificates
                  .Where(a => a.Active == "Y")
                  .Select(cer => cer.CertificateNumber.Substring(0, 4))
                  .Distinct()
                  .OrderBy(cer => cer);

    ViewBag.BoxNumber = new SelectList(query.ToList());

    return View();
}
查看我要从中获取的值

@{
    ViewBag.Title = "Activate";
}
<h2>@ViewBag.Title.</h2>
<h3>@ViewBag.Message</h3>

@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()
    @Html.DropDownList("BoxNumber", String.Empty)
    <input type="submit" value="Activate" class="btn btn-default" />
}

所选项目不会被返回。

检查这个问题,我在那里详细回答了:也检查一下这个问题:它起作用了,只是从表单中获取了值。谢谢你可以投票支持我的答案,这对你来说是一种感谢
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Activate(string BoxNumber)
{
    var connection = new SqlConnection(ConfigurationManager.ConnectionStrings["GrandCelebration"].ConnectionString);

    var command = new SqlCommand("ActivateCertificates", connection);
    command.CommandType = CommandType.StoredProcedure;
    command.Parameters.AddWithValue("@BoxNumber", BoxNumber);

    connection.Open();

    command.ExecuteNonQuery();

    connection.Close();

    return RedirectToAction("Activate");
}