簡體   English   中英

無法將類型'string'隱式轉換為'system.web.mvc.selectlistgroup'

[英]Cannot implicitly convert type 'string' to 'system.web.mvc.selectlistgroup'

只是這樣,我不必寫另一個示例來顯示我想要的內容。 請參考這個例子

使用數據庫中表格的示例,我想使用Category作為嵌套下拉列表中的字幕 (因為缺少更好的單詞)。

所以這是我到目前為止所擁有的:

List<SelectListItem> lstAssignments = new List<SelectListItem>();

        using(var context = new databaseconnectionstring()/*fake connection string name*/)
        {
            List<table1> lstActivity = context.table1.Where(x => x.deleted == false).ToList();

            foreach(table1 activity in lstActivity)
            {
                SelectListItem item = new SelectListItem() { Text = activity.text, Value = activity.ID.ToString(), Group = activity.subcategory };
            }

我在Group = activity.subcategory下收到錯誤消息。

Cannot implicitly convert type 'string' to 'system.web.mvc.selectlistgroup'

專門創建了subcategory屬性以區分下拉列表(與引用鏈接中的Category相同)。

如何將subcategory轉換為所要的?

正如錯誤所提到的,您試圖將String值提供給SelectListGroup屬性。

您應該進行如下初始化:

foreach(table1 activity in lstActivity)
{
    SelectListItem item = new SelectListItem() 
        { 
           Text = activity.text, 
           Value = activity.ID.ToString(), 
           Group = new SelectListGroup() { Name = activity.subcategory }
        };
}

[編輯]

一個改進將在foreach之前聲明SelectListGroup ,並將它們相應地分配給項目。 這將創建更少的實例。

該錯誤確切告訴您您需要做什么。 Group屬性鍵入為SelectListGroup然后將其傳遞給字符串,因此出現錯誤。 因此,展開它,您只需要使用您的字符串創建SelectListGroup的實例。 SelectListGroup本身具有Name屬性,因此您應該能夠執行以下操作:

foreach(table1 activity in lstActivity)
{
    var group = new SelectListGroup { Name = activity.subcategory };
    SelectListItem item = new SelectListItem() { Text = activity.text, Value = activity.ID.ToString(), Group = group };
}

這是因為您嘗試設置的實際Group屬性期望的是SelectListGroup對象,而不是activity.subcategory是字符串的對象。

您實際上需要創建一個Group實例,並將其Name屬性設置為循環中的類別:

SelectListItem item = new SelectListItem() { 
                           Text = activity.text, 
                           Value = activity.ID.ToString(), 
                           Group = new SelectListGroup(){ Name = activity.subcategory }};

抱歉,這個問題。 我只是想通了。

List<SelectListItem> lstAssignments = new List<SelectListItem>();

        using(var context = new fakeconnectionstring())
        {
            List<table1> lstActivity = context.table1.Where(x => x.deleted == false).ToList();

            foreach(table1 activity in lstActivity)
            {
                SelectListGroup lstGroupCategories = new SelectListGroup() { Name = activity.subcategory };
                SelectListItem item = new SelectListItem() { Text = activity.text, Value = activity.ID.ToString(), Group = lstGroupCategories };
            }
        }
 public List<SelectListItem> CarregarDropDownList(Centro modeloSelected = null, string selecttext = null)
    {
        var centro = GetAtivos().GroupBy(x => x.Centro1).Select(group => group.First()).OrderBy(x => x.Centro1).ToList();
        List<SelectListItem> lista = centro.Select(a => new SelectListItem() { Text = $"{a.Centro1}", Value = a.id_Centro.ToString(), Selected = (modeloSelected != null && modeloSelected.id_Centro == a.id_Centro) }).OrderBy(x => x.Text).ToList();
        //if (modeloSelected == null)
            lista.Insert(0, new SelectListItem() { Value = "", Text = selecttext ?? "-Todos-" });

        return lista;
    }

暫無
暫無

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

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