Kendo DropdownList选定的值

h

由于某种原因,我真的对Kendo DropdownList感到困惑。我似乎无法弄清楚如何从控制器的后期操作中获取所选项目。这是我拥有的简单代码示例。

模型:

public class DemoViewModel
{
    public DemoViewModel()
    {
        SelectList = new List<SelectListItem>();
    }
    public List<SelectListItem> SelectList { get; set; }
    public string SelectedID { get; set; }
}

控制器动作:

    public ActionResult Index()
    {
        ViewModel = new DemoViewModel();
        var oneItem = new SelectListItem() { Value = "1", Text = "Item 1", Selected = false };
        ViewModel.SelectList.Add(oneItem);
        oneItem = new SelectListItem() { Value = "2", Text = "Item 2", Selected = false };
        ViewModel.SelectList.Add(oneItem);
        oneItem = new SelectListItem() { Value = "3", Text = "Item 3", Selected = false };
        ViewModel.SelectList.Add(oneItem);
        oneItem = new SelectListItem() { Value = "4", Text = "Item 4", Selected = false };
        ViewModel.SelectList.Add(oneItem);


        ViewModel.SelectedID = "3";
        return View(ViewModel);
    }

    [HttpPost]
    public ActionResult Index(DemoViewModel viewModel)
    {
        //Do something with the updated viewmodel
    }

查看代码:

@(Html.Kendo().DropDownList()
    .Name("ProductsList")
    .BindTo(Model.SelectList)
    .DataTextField("Text")
    .DataValueField("Value")
    .Value(Model.SelectedID)
)

现在,当执行我的发布操作时,我获得了传入的DataViewModel参数值,但是SelectList属性为空,并且我不知道用户在列表中选择了哪个项目。我希望传递给我的post操作的DataViewModel看起来与传递给视图的DataViewModel完全一样,只是发生了什么变化。即我希望SelectList包含与传递给视图相同的4个项目,并且将“实际选中的”属性设置为true的“ Selected”属性设置为true。现在我知道我的假设是错误的。因此,我的问题是,如何将模型传递到包含项列表的视图,在剑道下拉列表中显示该列表,并知道在执行post操作后选择了哪个项?

用户名

您已经为下拉列表指定了名称,ProductsList但是您的模型不包含具有该名称的属性。更改为SelectedID,使其与您要绑定的属性相匹配。

请注意,建议您使用强类型版本

@(Html.Kendo().DropDownListFor(m => m.SelectedID) ....

现在,当您提交时,的值viewModel.SelectedID将是选择选项的值。

旁注:毫无意义地设置默认情况下)Selected = false属性,但是在任何情况下,当您强烈绑定到模型属性时,都将忽略它。当您第一次渲染视图时,您的第三个选项将被选中,因为并且您有一个带有的选项SelectListItemfalseSelectedID = 3;value="3"

还要注意,该SelectList属性将为空,因为您不会为SelectListItem视图中的每个控件生成控件(也不应该)。确保如果返回视图,则重新填充集合。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章