Asp.net mvc 在MVC中使用LLBL作为模型

Asp.net mvc 在MVC中使用LLBL作为模型,asp.net-mvc,llblgenpro,Asp.net Mvc,Llblgenpro,我已经决定尝试使用ASP.NETMVC,但我想替换的第一部分是模型。我正在使用LLBL Pro作为模型 我有一个名为“组”的表,它是一个简单的查找表。我想获取表格的结果并在MVC中填充一个列表。一些应该非常简单的事情。。。或者我是这么想的。。。。我尝试过各种各样的方法,因为我遇到了如下错误: 传递到字典中的模型项的类型为“System.Collections.Generic.List1[glossary.EntityClass.GroupEntity]”,但此字典需要类型为“System.Col

我已经决定尝试使用ASP.NETMVC,但我想替换的第一部分是模型。我正在使用LLBL Pro作为模型

我有一个名为“组”的表,它是一个简单的查找表。我想获取表格的结果并在MVC中填充一个列表。一些应该非常简单的事情。。。或者我是这么想的。。。。我尝试过各种各样的方法,因为我遇到了如下错误:

传递到字典中的模型项的类型为“System.Collections.Generic.List
1[glossary.EntityClass.GroupEntity]”,但此字典需要类型为“System.Collections.Generic.IEnumerable
1[glossary.CollectionClasses.GroupCollection]”的模型项


private GroupCollection gc=new GroupCollection()


这就是我所要做的,我尝试了很多变化,但我的目标只是获取数据并显示它。

您可以在您的?????将ViewUserControl(标记中)的类型更改为System.Collections.Generic.List。基本上,您需要纠正的是视图类型与传入的模型之间的不匹配。

我不确定您的确切错误,但我大胆猜测,出现了以下两种情况之一:

  • 您正在对LLBLGen对象进行某种无效/非法调用。如果是这种情况,请确保设置正确/调用正确的方法/属性等

  • 您传递给面纱的模型太多毛,无法处理。在这种情况下,一般来说,您应该创建一个光照“视图模型”类,该类只包含您想要显示的数据,并首先从LLBLGen对象中填充该类,然后将其传递给视图,该视图将能够轻松处理视图模型类

以下是一些参考资料:


不确定这是否可行,但您可以尝试将EntityCollection包装到ViewModel类中,并将其传递给视图,如下所示:

public class GroupsViewModel()
{
    public GroupCollection Groups { get; set; }
    // other items in your view model could go here
}
然后将控制器方法转换为

public ActionResult Index()
{
    GroupCollection gc = new GroupCollection();
    gc.GetMulti(null);
    GroupsViewModel vm = new GroupsViewModel();
    vm.Groups = gc;
    return View(vm);
}

我喜欢这种方法,因为每个ViewModel本身就是一个对象。

根据Yuriy所说的,看起来您的视图被强类型化为一个groupentity集合的“集合”,而您正试图只传递groupentity集合。确保“集合”类型(IEnumerable、IList等)与控制器中发送的集合类型以及集合中实际对象的类型相匹配

视图: System.Collections.Generic.List1[glossary.EntityClass.GroupEntity]

控制器: System.Collections.Generic.List1[glossary.EntityClass.GroupEntity]


只是一个想法

出于好奇,你什么时候见过这个模型对webforms viewengine来说太糟糕了?我不记得在哪里读到过,我想它在书呆子晚餐教程的某个地方,但我看到的示例更多的是关于视图模板生成器如何不能反映LINQ2SQl生成的类,因为它有某种循环引用。。。事实上,我认为在这种情况下可能是JSON序列化。。。此外,还有一些实例表明,对象的成员是另一个类,而VisualStudio无法为其生成模板。我想这与这里的情况有些不同,但我认为相同的原则可能会有帮助。通常,ViewModel更容易处理,因为您可以封装多个实体(或映射到您自己的对象)。我们将LLBL用于在ASP.NET MVC中构建的大型人力资源产品。这对我们来说非常有效。
public ActionResult Index()
{
    GroupCollection gc = new GroupCollection();
    gc.GetMulti(null);
    GroupsViewModel vm = new GroupsViewModel();
    vm.Groups = gc;
    return View(vm);
}