我使用以下C#代码创建一个选择列表。
ViewData["companyList"] = new SelectList(
db.companies.Where(ai => true), "id", "companyName", domain.companyId
);
当我单步执行代码时,ViewData上下文选择了正确的项目(列表中的secod项目)。
剃刀有以下几点:
<div class="editor-label">
@Html.LabelFor(model => model.companyId)
</div>
<div class="editor-field">
@Html.DropDownListFor(model => model.companyId, (IEnumerable<SelectListItem>)ViewData["companyList"], new { @class = "apex-select-list" })
@Html.ValidationMessageFor(model => model.companyId)
</div>
public partial class company
{
public int id { get; set; }
public string companyName { get; set; }
public string description { get; set; }
public short status { get; set; }
public int location911Id { get; set; }
public int timeoffsetid { get; set; }
public int creatorId { get; set; }
public int modifiedById { get; set; }
public System.DateTime created { get; set; }
public System.DateTime updated { get; set; }
}
public partial class domain
{
public int id { get; set; }
public string domainName { get; set; }
public bool enabled { get; set; }
public int companyId { get; set; }
public int creatorId { get; set; }
public int modifiedById { get; set; }
public System.DateTime created { get; set; }
public System.DateTime updated { get; set; }
}
显示页面时,它始终默认为所选的第一个项目。我查看了页面源代码,显然是选择了第一项而不是调试器中显示的选项。
我多次使用过这个结构,从来没有遇到过问题。
这怎么可能发生?
答案 0 :(得分:0)
ViewData["companyList"] = new SelectList(
db.companies.AsEnumerable(), "companyId", "companyName", domain.companyId
);
看起来你有错误的dataValueField参数,因为公司可能没有名为id
的列但是有一个名为companyId
的列。
答案 1 :(得分:0)
您的代码看起来很好并且应该以这种方式工作,但如果显示默认值,则可以是:
1)有些javascript正在将值更改为默认值。
2)domain.companyId中的值不属于列表
db.companies.Where(ai => true)