在我的控制器中,我有一个存储在ViewBag中的代理列表
ViewBag.Agents = new SelectList(db.Users.ToList(), "Id", "UserName", string.Empty);
在我的视图中,我将其显示为DropDownListFor
@Html.DropDownListFor(model => a.AgentList, ViewBag.Agents as SelectList, new { @class = "form -control", @style = "width:130px; height:30px" })
但是,我的列表未将已选择的代理显示为默认。我错过了什么?如何设置下拉列表以将所选代理显示为默认值?
我甚至试过这个但没有任何作用:
@Html.DropDownListFor(model => a.AgentList, new SelectList( ViewBag.Agents as SelectList, a.AgentName), new { @class = "form -control", @style = "width:130px; height:30px" })
这是我的模特
[Display(Name = "Agent ID")]
public string AgentID { get; set; }
[Display(Name = "Agent Name")]
public string AgentName { get; set; }
[Display(Name = "Agent")]
public List<ApplicationUser> AgentList { get; set; }
感谢您的帮助
答案 0 :(得分:1)
请使用以下步骤绑定 DropDownListFor 中的所选值。
步骤: - 1 ViewBag.Agents= db.Users.ToList();
步骤: - 2 @Html.DropDownListFor(model => Model.AgentID, new SelectList(ViewBag.Agents, "Id", "UserName",2))
答案 1 :(得分:0)
尝试:
@Html.DropDownListFor(model => a.AgentList, new SelectList( ViewBag.Agents, Model.AgentName), new { @class = "form -control", @style = "width:130px; height:30px" })
答案 2 :(得分:0)
您好,您使用了selectlist
的重载SelectList Constructor (IEnumerable, String, String, Object)
public SelectList(
IEnumerable items,
string dataValueField,
string dataTextField,
object selectedValue
)
它将使用列表的指定项,数据值字段,数据文本字段和选定的值初始化SelectList类的新实例。
所以你的代码会改变如下:
ViewBag.Agents = new SelectList(db.Users.ToList(), "Id", "UserName", 10 /*Default user Id*/);
答案 3 :(得分:0)
我发现,如果表单绑定到模型,模型值(默认情况下可能为空)将覆盖 ViewBag 列表设置的任何选定值。所以,最好在模型内部设置默认值。
例如:
[表单的ViewModel] ModelFormType ViewModel = new ModelFormType(); ModelFormType.UserId = 11(默认用户 ID)。