-2

如何将匿名类型分配给模型?使用 ViewBag 我可以很容易地像这样分配:

ViewBag.certType = comboType.ToList();

我正在从我的系统中删除所有 ViewBags,现在我正在尝试这样:

model.storeLocations = comboType.ToList();

我收到以下错误:

 Cannot implicitly convert type 'System.Collections.Generic.List<AnonymousType#1>' 
to 'int'    S:\Projects\tgpwebged\tgpwebged\Controllers\AdminController.cs  
376 40  tgpwebged

模型:

public class TipoDocumentoModel
    {
        public sistema_DocType Type { get; set; }
        public IEnumerable<string> Indices { get; set; }
        public IEnumerable<string> NonAssoIndices { get; set; }
        public int storeLocations { get; set; }
    }

控制器:

public ActionResult AdminSettingAddTipo()
    {
        SettingsModels.TipoDocumentoModel model = new SettingsModels.TipoDocumentoModel();

        //Pega os indices e locais de armazenamentos cadastrados no sistema
        using (tgpwebgedEntities context = new tgpwebgedEntities())
        {
            var obj = from u in context.sistema_Indexes select u.idName;
            model.Indices = obj.ToList();

            var comboType = from c in context.sistema_Armazenamento
                            select new
                            {
                                id = c.id,
                                local = c.caminhoRepositorio
                            };

            model.storeLocations = comboType.ToList();
        }

        return PartialView(model);
    }
4

1 回答 1

0

第一个问题是您试图将一个List<>项目分配给一个int属性。

从匿名投影中提取命名类的简单方法。

//model
public List<MyClass> storeLocations { get; set; }

//snip
var comboType = from c in context.sistema_Armazenamento
                select new MyClass
                        {
                            id = c.id,
                            local = c.caminhoRepositorio
                        };

storeLocations = comboType.ToList();

其他选项

  1. 如果您仍然想要动态行为,您可以将您的属性更改为dynamic
  2. 投影到一个Tuple<int, string>()(猜测第二种)
  3. 如果最终结果是一个下拉列表,您可以投影到SelectList()
于 2012-12-06T19:18:15.187 回答