簡體   English   中英

下拉列表自動變成多個

[英]Drop-down list automatically becomes multiple

誰能解釋為什么我的下拉列表會自動允許多選?

我對 Net Core 很陌生,這是我第一次添加下拉菜單,而且我顯然做錯了什么。 從技術上講,一切正常,下拉列表被填充,模型在發布時獲得正確的數據,但由於某種原因,下拉列表會自動設置多個屬性。

看法

<select asp-for="@Model.fooForm.CountryRows"
        asp-items="@(new SelectList(Model.fooForm.CountryRows,"CountryCode","CountryName"))"
        class="form-control">
    <option>Please select Country of use</option>
</select>

視圖模型

namespace foo.Models.ViewModels
{
    [Bind(Prefix = nameof(fooIndexRootVM.fooForm))]
    public class fooVM
    {
        public fooVM()
        {
        }

        public fooVM(CountryVM[] countryRows)
        {
            CountryRows = countryRows;
        }

        [Display(Name = "Country of use")]
        public virtual CountryVM[] CountryRows { get; set; }
    }
}

控制器/服務

public async Task<fooIndexRootVM> GetCountries()
{
    var countryRows = await fooContext.Country
        .OrderBy(c => c.CountryCode)
        .Select(c => new CountryVM
        {
            CountryCode = c.CountryCode
            ,CountryName = c.CountryName
            ,CountryBlocked = c.CountryBlocked
        })
        .ToArrayAsync();

    return new fooIndexRootVM
    {
        fooForm = new fooVM(countryRows)
    };
}

來自MSDN:選擇標簽助手

如果 asp-for 屬性中指定的屬性是 IEnumerable,則 Select Tag Helper 將自動生成 multiple = "multiple" 屬性。

因此,在您的情況下,它正在查看的模型表示asp-for="@Model.fooForm.CountryRows"

為了解決這個問題,您可以為所選國家/地區添加新屬性以進行建模

public virtual CountryVM SelectedCountry { get; set; }

那么asp-for應該是這樣的:

<select asp-for="@Model.fooForm.SelectedCountry"
        asp-items="@(new SelectList(Model.fooForm.CountryRows,"CountryCode","CountryName"))"
        class="form-control">
    <option>Please select Country of use</option>
</select>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM