Kendo DropdownList 选定值
Kendo DropdownList Selected Value
出于某种原因,我对 Kendo DropdownList 感到很吃力。我似乎无法弄清楚如何从控制器的 post 操作中获取所选项目。这是我的一个简单代码示例。
型号:
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)
)
现在,当我的 post 操作被执行时,我得到了一个传入的 DataViewModel 参数值,但是 SelectList 属性 是空的,我不知道用户选择了列表中的哪个项目.我希望传递给我的 post 操作的 DataViewModel 与传递给视图的 DataViewModel 完全一样,只是发生了一些变化。 IE。我希望 SelectList 包含传递给视图的相同 4 个项目以及 "Selected" 属性 设置为 true 的实际选择的项目。现在我知道我的假设是错误的。所以,我的问题是,如何将模型传递到包含项目列表的视图,在 kendo 下拉列表中显示该列表,并在执行 post 操作后知道选择了哪个项目?
您已将下拉列表命名为 ProductsList
,但您的模型不包含具有该名称的 属性。将其更改为 SelectedID
以匹配您要绑定的 属性。
请注意,建议您使用强类型版本
@(Html.Kendo().DropDownListFor(m => m.SelectedID) ....
现在提交时,viewModel.SelectedID
的值将是选择选项的值。
旁注:设置 SelectListItem
的 Selected = false
属性 没有意义(默认情况下为 false
),但无论如何,当您强烈绑定到模型 属性。当您第一次渲染视图时,您的第三个选项将被选中,因为 SelectedID = 3;
并且您有一个选项 value="3"
.
另请注意,SelectList
属性 将为空,因为您不会为视图中的每个 SelectListItem
生成控件(您也不应该)。确保如果您 return 重新填充集合的视图。
出于某种原因,我对 Kendo DropdownList 感到很吃力。我似乎无法弄清楚如何从控制器的 post 操作中获取所选项目。这是我的一个简单代码示例。
型号:
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)
)
现在,当我的 post 操作被执行时,我得到了一个传入的 DataViewModel 参数值,但是 SelectList 属性 是空的,我不知道用户选择了列表中的哪个项目.我希望传递给我的 post 操作的 DataViewModel 与传递给视图的 DataViewModel 完全一样,只是发生了一些变化。 IE。我希望 SelectList 包含传递给视图的相同 4 个项目以及 "Selected" 属性 设置为 true 的实际选择的项目。现在我知道我的假设是错误的。所以,我的问题是,如何将模型传递到包含项目列表的视图,在 kendo 下拉列表中显示该列表,并在执行 post 操作后知道选择了哪个项目?
您已将下拉列表命名为 ProductsList
,但您的模型不包含具有该名称的 属性。将其更改为 SelectedID
以匹配您要绑定的 属性。
请注意,建议您使用强类型版本
@(Html.Kendo().DropDownListFor(m => m.SelectedID) ....
现在提交时,viewModel.SelectedID
的值将是选择选项的值。
旁注:设置 SelectListItem
的 Selected = false
属性 没有意义(默认情况下为 false
),但无论如何,当您强烈绑定到模型 属性。当您第一次渲染视图时,您的第三个选项将被选中,因为 SelectedID = 3;
并且您有一个选项 value="3"
.
另请注意,SelectList
属性 将为空,因为您不会为视图中的每个 SelectListItem
生成控件(您也不应该)。确保如果您 return 重新填充集合的视图。