8

現在、asp.net 5 で taghelpers を使用しようとしています。ViewBag のリストで選択タグ ヘルパーを使用したいと考えています。ビューバッグの代わりにIEnumerableであるモデルからそれを取得しようとするため、asp-forフィールドに入力したものはすべてエラーになります。

これを置き換えたい:

@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>

コントローラーで選択リストを作成する方法は次のとおりです。

ViewBag.Companies = new SelectList(await DbContext.Company.ToListAsync(), "CompanyID", "Name");
4

3 に答える 3

10

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>

うまくいけば、これが役に立ちます!

于 2015-08-05T08:19:26.347 に答える
3

asp-for は現在選択されている値を持つプロパティである必要があり、asp-items は

IEnumerable<SelectListItem>

このスニペットは、私のプロジェクトの作業コードからのものです:

<select id="CompanyCountry" asp-for="CompanyCountry"
           asp-items="Model.AvailableCountries" class="form-control"></select>

私が使用している私のモデルで

IList<SelectListItem> 

利用可能な国

于 2015-08-04T15:38:56.317 に答える
0

あなたはこのように試すことができます...

@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();
    }
于 2015-08-04T08:59:24.700 に答える