Select TagHelper 使用来自 ViewBag 的列表
Select TagHelper Using List from ViewBag
我目前正在尝试在 asp.net 5 中使用 taghelpers。我想将 select 标签助手与来自 ViewBag 的列表一起使用。我放入 asp-for 字段的任何内容都会给我一个错误,因为它试图从 IEnumerable 模型而不是视图包中提取它。
我想替换这个:
@model IEnumerable<InvoiceIT.Models.Invoice>
@using (Html.BeginForm())
{
<p>
@Html.DropDownList("Companies", String.Empty)
<input type="submit" value="Filter" class="btn btn-default" />
</p>
}
有了这个:
@model IEnumerable<InvoiceIT.Models.Invoice>
<form asp-controller="Invoice" asp-action="Index" method="post" class="form-horizontal" role="form">
<select asp-for="????" asp-items="ViewBag.Companies" class="form-control">
</select>
<input type="submit" value="Save" class="btn btn-default" />
</form>
以下是我在控制器中填充 select 列表的方式:
ViewBag.Companies = new SelectList(await DbContext.Company.ToListAsync(), "CompanyID", "Name");
你可以这样试试...
@Html.DropDownListFor(model => model.Id_TourCategory, new SelectList(ViewBag.TourCate, "Value", "Text"))
public ActionResult TourPackage()
{
List<TourCategory> lst = new List<TourCategory>();
lst = db.TourCategories.ToList();
ViewBag.TourCate = new SelectList(lst, "Id", "CategoryName");
return View();
}
asp-因为只需要是具有当前选定值的 属性,而 asp-items 需要是
IEnumerable<SelectListItem>
此片段来自我项目中的工作代码:
<select id="CompanyCountry" asp-for="CompanyCountry"
asp-items="Model.AvailableCountries" class="form-control"></select>
在我的模型中,我使用
IList<SelectListItem>
可用国家
如果您不希望 asp-for
属性直接从 Model
中提取,您可以通过提供 @
.
来覆盖该行为
又名:
<select asp-for="@ViewBag.XYZ">
...
</select>
因此,根据您所说的,我认为您的位变为:
@model IEnumerable<InvoiceIT.Models.Invoice>
<form asp-controller="Invoice" asp-action="Index" method="post" class="form-horizontal" role="form">
@{
SelectList companies = ViewBag.Companies;
var currentlySelectedIndex = 0; // Currently selected index (usually will come from model)
}
<select asp-for="@currentlySelectedIndex" asp-items="companies" class="form-control">
</select>
<input type="submit" value="Save" class="btn btn-default" />
</form>
希望这对您有所帮助!
我目前正在尝试在 asp.net 5 中使用 taghelpers。我想将 select 标签助手与来自 ViewBag 的列表一起使用。我放入 asp-for 字段的任何内容都会给我一个错误,因为它试图从 IEnumerable 模型而不是视图包中提取它。
我想替换这个:
@model IEnumerable<InvoiceIT.Models.Invoice>
@using (Html.BeginForm())
{
<p>
@Html.DropDownList("Companies", String.Empty)
<input type="submit" value="Filter" class="btn btn-default" />
</p>
}
有了这个:
@model IEnumerable<InvoiceIT.Models.Invoice>
<form asp-controller="Invoice" asp-action="Index" method="post" class="form-horizontal" role="form">
<select asp-for="????" asp-items="ViewBag.Companies" class="form-control">
</select>
<input type="submit" value="Save" class="btn btn-default" />
</form>
以下是我在控制器中填充 select 列表的方式:
ViewBag.Companies = new SelectList(await DbContext.Company.ToListAsync(), "CompanyID", "Name");
你可以这样试试...
@Html.DropDownListFor(model => model.Id_TourCategory, new SelectList(ViewBag.TourCate, "Value", "Text"))
public ActionResult TourPackage()
{
List<TourCategory> lst = new List<TourCategory>();
lst = db.TourCategories.ToList();
ViewBag.TourCate = new SelectList(lst, "Id", "CategoryName");
return View();
}
asp-因为只需要是具有当前选定值的 属性,而 asp-items 需要是
IEnumerable<SelectListItem>
此片段来自我项目中的工作代码:
<select id="CompanyCountry" asp-for="CompanyCountry"
asp-items="Model.AvailableCountries" class="form-control"></select>
在我的模型中,我使用
IList<SelectListItem>
可用国家
如果您不希望 asp-for
属性直接从 Model
中提取,您可以通过提供 @
.
又名:
<select asp-for="@ViewBag.XYZ">
...
</select>
因此,根据您所说的,我认为您的位变为:
@model IEnumerable<InvoiceIT.Models.Invoice>
<form asp-controller="Invoice" asp-action="Index" method="post" class="form-horizontal" role="form">
@{
SelectList companies = ViewBag.Companies;
var currentlySelectedIndex = 0; // Currently selected index (usually will come from model)
}
<select asp-for="@currentlySelectedIndex" asp-items="companies" class="form-control">
</select>
<input type="submit" value="Save" class="btn btn-default" />
</form>
希望这对您有所帮助!