在ASP.Net MVC中回发后,在页面重新加载时保持选中下拉选项
本文关键字:加载 选项 MVC Net ASP 新加载 | 更新日期: 2023-09-27 18:19:32
正如我所知,在MVC中的DropdownListFor或DropdownList中,在回发或编辑记录后,没有保留选项。
有人能告诉我们如何做到这一点吗?
这是我的样本代码
@using (Html.BeginForm())
{
@Html.DropDownList("menuitems",Model._menu,"Select Menu")
}
这里_menu是IEnumerable类型列表。当这个页面在浏览器上加载时,我希望通过索引号或其他方式选择特定的DropDownList选项
列表模型-
public class MenuListModel
{
public long menuid { get; set; }
public string menuname { get; set; }
}
从数据库获取列表
public IEnumerable<MenuListModel> GetMenuItems()
{
List<MenuListModel> _MenuListModel = new List<MenuListModel>();
var query = (from q in db.menus.Where(c => c.valid == true) select new{menuid=q.menuid,menuname=q.menuname});
foreach (var row in query.ToList())
{
MenuListModel _menu = new MenuListModel();
_menu.menuid = row.menuid;
_menu.menuname = row.menuname;
_MenuListModel.Add(_menu);
}
return _MenuListModel;
}
控制器
IEnumerable<MenuListModel> _MenuListModel = ftwCommonMethods.GetMenuItems();
UserRightViewSearch _UserRightViewSearch = new UserRightViewSearch();
_UserRightViewSearch._menu = _MenuListModel;
return View(_UserRightViewSearch);
提前谢谢。
以一个简单的例子进行演示,用户选择了下拉列表并提交了整个页面,控制器中的一些验证失败,或者您想发送到同一屏幕并保留所选值的其他原因。。。在这种情况下,尝试以以下修改为例,然后您可以扩展到您的需求。。
查看代码:
@Html.DropDownList("SelectedMenuItem", Model._menu.Select(menu => new SelectListItem { Text = menu.menuname, Value = menu.menuid.ToString() }), "--Select Menu--")
主视图模型:
public class UserRightViewSearch
{
public IEnumerable<MenuListModel> _menu { get; set; }
public long SelectedMenuItem { get; set; } //Property to hold dropdown selection
}
控制器动作:
[HttpPost]
public ActionResult Index(UserRightViewSearch userRightView)
{
//Here may be validation failed or for some other reason, return to same view
userRightView._menu = GetMenuItems(); //Just for demo, but somehow you need to populate the default data to show as listbox items here, otherwise you see null reference exception or no items in list based on how you handle the case
return View(userRightView);
}
希望这能为你提供一些进一步探索的想法。。