У меня есть представление в моем проекте MVC, в котором есть WebGrid, который связан моделью "Account", которую я передал в View.
В моем контроллере "Account" я создал список SelectedListItem, которыйУ меня есть параметры DropDownList, которые я затем устанавливаю в ViewBag:
public ActionResult Index()
{
var accounts = db.Accounts;
var groups = db.Groups;
List<SelectListItem> groupList = new List<SelectListItem>();
foreach(var item in groups)
{
groupList.Add(new SelectListItem()
{
Value = item.group_id.ToString(),
Text = item.group_name
});
}
ViewBag.Groups = groupList;
return View(accounts);
}
DropDownList содержит 3 записи со своим значением и текстом следующим образом:
1, One 2, Two 3, Three
Моя проблема заключается в том, чтобы group_id (Значение) связанных данных правильно отображал имя_группы (Текст) в DropDownList.
Это то, что у меня есть:
grid.Column("group_id","Group", format: (item) => @Html.DropDownList("GroupId", (List<SelectListItem>)ViewBag.Groups))
DropDownList содержит все 3 значения, которые я упоминал ранее, он просто не устанавливает для DropDownList правильное значение для всех связанных учетных записей, как показано на рисунке:
AccountWebGrid
Я отредактировал это сообщение, чтобы добавить свой код просмотра.
@model IEnumerable<Account>
@{
ViewBag.Title = "Index";
WebGrid grid = new WebGrid(Model, rowsPerPage: 10);
}
<h2>Fee Invoices</h2>
@grid.GetHtml(tableStyle: "table table-bordered",
mode: WebGridPagerModes.All,
firstText: "<< First",
previousText: "< Prev",
nextText: "Next >",
lastText: "Last >>",
columns: grid.Columns(
grid.Column("account_name", "Account"),
grid.Column("account_number", "Account Number"),
grid.Column("as_of_date", "Date", format: (item) => string.Format("{0:MM/dd/yyyy}", item.as_of_date)),
grid.Column("approved", "Approved", format: @<text><input id="select" class="box" name="select" type="checkbox" @(item.approved ? "checked='checked'" : "") value="@item.approved" /></text>),
grid.Column("group_id","Group", format: (item) => @Html.DropDownList("GroupId", (List<SelectListItem>)ViewBag.Groups))
)
))