C# 在MVC的SelectList中设置默认值#

C# 在MVC的SelectList中设置默认值#,c#,asp.net-mvc,selectlist,C#,Asp.net Mvc,Selectlist,我有一个选择列表: ViewData["Agency"] = new SelectList(db.Agencies.AsNoTracking().OrderBy(_ => _.AgencyID), "AgencyId", "Name"); 我需要选择默认值,我尝试以下操作: ViewData["Agency"] = new SelectList(db.Agencies.AsNoTracking().OrderBy(_ => _.AgencyID), "AgencyId", "Na

我有一个
选择列表

ViewData["Agency"] = new SelectList(db.Agencies.AsNoTracking().OrderBy(_ => _.AgencyID), "AgencyId", "Name");
我需要选择默认值,我尝试以下操作:

 ViewData["Agency"] = new SelectList(db.Agencies.AsNoTracking().OrderBy(_ => _.AgencyID), "AgencyId", "Name",999);
这是:

var valueSelected = db.Agencies.AsNoTracking().Where(_=>_.AgencyId == 999).First();

ViewData["Agency"] = new SelectList(db.Agencies.AsNoTracking().OrderBy(_ => _.AgencyID), "AgencyId", "Name",valueSelected );

您需要将
AgentID
传递给
SelectList
构造函数,以便设置为默认选中:

 var valueSelected = db.Agencies.AsNoTracking().Where(=>.AgencyId == 999).First();
现在在选择列表中:

ViewData["Agency"] = new SelectList(db.Agencies.AsNoTracking().OrderBy(_ => _.AgencyID), "AgencyId", "Name",valueSelected.AgencyId );
尝试
FirstOrDefault()
而不是
First()


问题是什么?你还没有展示你的观点。假设您使用
@Html.DropDowmListFor(m=>m.someProperty,(SelectList)ViewData[“Agency”])
,则需要设置
someProperty
的值-如果您绑定到属性,则属性的值决定了所选选项(尝试设置
selectedValue
参数只是被html帮助程序忽略)您可以在dotnetfiddlevalueSelected.AgencyId=999中重现,因此这会创建与op问题中第二次尝试不起作用相同的内容。
var valueSelected = db
    .Agencies.AsNoTracking()
    .Where(_=>_.AgencyId == 999)
    .FirstOrDefault();

ViewData["Agency"] = new SelectList(db.Agencies.AsNoTracking()
    .OrderBy(_ => _.AgencyID), "AgencyId", "Name",valueSelected );