【问题标题】:Using LLBL as Model in MVC在 MVC 中使用 LLBL 作为模型
【发布时间】:2009-10-14 19:36:07
【问题描述】:

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

我有一个名为“组”的表,它是一个简单的查找表。我想获取表格的结果并在 MVC 中填充一个列表。应该很简单的东西......或者我想......我已经尝试了各种各样的东西,因为我遇到了如下错误:

传入字典的模型项的类型为“System.Collections.Generic.List1[glossary.EntityClasses.GroupEntity]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable1[glossary.CollectionClasses.GroupCollection]”。

private GroupCollection gc = new GroupCollection();

    public ActionResult Index()
    {

      gc.GetMulti(null);
      return View( gc.?????? );
    }

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

【问题讨论】:

    标签: asp.net-mvc llblgenpro


    【解决方案1】:

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

    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 本身就是一个对象。

    【讨论】:

      【解决方案2】:

      您可以在 ????? 的位置使用 AsEnumerable 扩展名是或将您的 ViewUserControl(在标记中)的类型更改为 System.Collections.Generic.List 类型。基本上你需要纠正的是View的类型和传入的Model不匹配。

      【讨论】:

        【解决方案3】:

        我不确定您的确切错误,但我敢猜测正在发生两件事之一:

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

        • 您传递给视图的模型太长,无法处理。在这种情况下,通常情况下,您应该创建一个轻量级的“视图模型”类,只包含您想要显示的数据并首先从您的 LLBLGen 对象中填充它,然后将其传递给视图,这将是能够轻松处理您的视图模型类。

        以下是一些参考资料:

        【讨论】:

        • 出于好奇,您什么时候看到该模型对 webforms 视图引擎来说太糟糕了?
        • 我不记得我在哪里读到它了,我认为它在书呆子晚餐教程的某个地方,但我看到的示例实际上更多地是关于视图模板生成器如何无法反映生成的 LINQ2SQl类,因为它有某种循环引用......实际上我认为在这种情况下它可能是 JSON 序列化......此外,有几个实例,其中一个对象的成员是另一个类并且 Visual Studio 无法生成它的模板。我想这与这里的情况有些不同,但我认为同样的原则可能会有所帮助
        • 一般来说,ViewModel 更容易处理,因为您可以封装多个实体(或映射到您自己的对象)。我们将 LLBL 用于构建在 ASP.NET MVC 中的非常大的 HR 产品。它对我们非常有效。
        【解决方案4】:

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

        查看: System.Collections.Generic.List1[glossary.EntityClasses.GroupEntity]

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

        只是一个想法

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-02-11
          • 2011-05-24
          • 1970-01-01
          • 2010-10-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多