因此,我试图通过DropDownList和BeginForm传递选定的多选值。不想用javascript/ajax传递。所选的插件工作正常,向我展示像我想要的条目。但我对控制器获得空值:通过BeginForm和DropDownList传递选定的值
型号
public class SorteioEspecial
{
RepositoryService service = new RepositoryService();
public SorteioEspecial()
{
funcionario = new List<Funcionario>();
ponderacaoFuncionario = new List<PonderacaoFuncionario>();
SelectedIds = new List<int>();
}
public int Id { get; set; }
public IEnumerable<Funcionario> funcionario { get; set; }
public IEnumerable<PonderacaoFuncionario> ponderacaoFuncionario { get; set; }
public List<int> SelectedIds { get; set; }
public IEnumerable<Funcionario> GetFuncionarios()
{
funcionario = service.GetFuncionarios();
return funcionario;
}
public IEnumerable<PonderacaoFuncionario> GetPonderacaoFuncionario()
{
ponderacaoFuncionario = service.GetPonderacaoFuncionario();
return ponderacaoFuncionario;
}
}
控制器
[HttpGet]
public ActionResult EscolherFuncionarios()
{
var sorteioEspecial = new SorteioEspecial();
List<Funcionario> list = new List<Funcionario>();
list = sorteioEspecial.GetFuncionarios().ToList().OrderBy(x => x.Nome).ToList();
ViewBag.FuncionarioId = new SelectList(list, "Id", "Nome");
return View(sorteioEspecial);
}
[HttpPost]
public ActionResult EscolherFuncionarios(List<int> SelectedIds)
{
return View();
}
查看
@model Apdd.Models.SorteioEspecial
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Escolha os funcionários a ir a sorteio</h2>
@using (Html.BeginForm())
{
@Html.DropDownList("FuncionarioId", null, htmlAttributes: new { @class = "chosen-select", @data_placeholder = "Pick one!", @multiple = "true" })
<input type="submit" value="save" />
}
<script src="~/Scripts/jquery-2.1.1.js"></script>
<script src="~/Scripts/jquery.js"></script>
<script src="~/Scripts/chosen.proto.js"></script>
<link href="~/Scripts/chosen.css" rel="stylesheet" />
<script src="~/Scripts/chosen.jquery.js"></script>
<script>
$(".chosen-select").chosen({
disable_search_threshold: 10,
no_results_text: "None!",
width: "95%"
});
</script>
ViewBag中的值是一个实体列表(Id,Name和其他一些参数),对于我一直在寻找的东西,选择的只是传递Id,正是我想要的。我需要做什么来将值传递给控制器?
你可以参考通过.. http://stackoverflow.com/questions/12295199/how-to-pass-multiselect -lists-selected-items-back-to-controller – 2015-03-02 12:33:20
@MilindRajput我已经打开了这个解决方案,但我仍然无法工作 – danielpm 2015-03-02 12:36:33