DeExpress MVC 17.1如何从数据库

问题描述:

我想用物业tokenBoxSettings.Properties.DataSource填充从数据库中TokenBox填充TokenBoxDeExpress MVC 17.1如何从数据库

TokenBoxView.cshtml

groupSettings.Items.Add(
         formLayoutSettings.Items.Add(i => 
         { 
          i.FieldName = "email"; 
          i.Caption = "Email"; 
          i.NestedExtensionType = FormLayoutNestedExtensionItemType.TokenBox; 
          TokenBoxSettings tokenBoxSettings = (TokenBoxSettings) i.NestedExtensionSettings; 
          tokenBoxSettings.Width = 350; 
//data binding 
     tokenBoxSettings.Properties.DataSource = mainController.GetMails(); 
          tokenBoxSettings.Properties.TextField = "email_empresarial"; 
          tokenBoxSettings.Properties.ValueField = "email_empresarial"; 
          tokenBoxSettings.Properties.IncrementalFilteringMode = IncrementalFilteringMode.Contains; 
          tokenBoxSettings.Properties.ValueSeparator = ';'; 
         }) 
         ); 

TokenBoxController.cs

//mainController 
//I created a dictionary based on the result of select 
public Dictionary<string, string> GetMails() 
     { 
      var email = db.usuario.ToList().Select(e => new { e.email_empresarial }); 
      var emails = new Dictionary<string, string>(); 

      foreach (var mail in email) 
      { 
       correos.Add(mail.ToString(), mail.ToString()); 
      } 
      return emails; 
} 

但它让我看到“对象明确”,我只需要值,例如肯尼斯曼努埃尔

tokenBox list

我在做什么错?或者我可以采取什么其他方法?

您正在为tokenBoxSettings.Properties.TextFieldtokenBoxSettings.Properties.ValueField指定相同的email_empresarial字段名称。

因为你是你的TokenBox结合到词典,请尝试更改设置TextFieldValueField参考词典键和值,像这样:

tokenBoxSettings.Properties.TextField = "Value"; 
tokenBoxSettings.Properties.ValueField = "Key"; 

此外,在您的GetMail()方法已宣布var emails但在您正在向未声明的correos变量添加项目的循环。你确定你没有bug吗?

另请注意,在由GetMails()返回的词典中,您使用相同的值mail.ToString()来填充字典键和值。你确定你真的需要使用Dictionary来绑定你的TokenBox吗?如果键和值相同,则可尝试使用普通的List<string>