【问题标题】:How to implement lookup table in mvc framework?如何在mvc框架中实现查找表?
【发布时间】:2011-01-25 08:32:03
【问题描述】:

Asp.net MVC2:我的 mvc 应用程序中有很多下拉列表。起初,我首先为每个具有唯一 ID 和名称的表创建一个表,并在控制器和视图中引用它们。应用程序变大了,建议我使用一个查找表,其中包含查找类型和查找值作为复合主键,并填充其中下拉列表的所有值。我查看了整个互联网,用于 mvc 的唯一方法是每个下拉列表一个表!有人可以向我解释如何实现它,请详细说明,因为我完全迷路了。一个教程的链接也很好。 我正在使用 vb.net 和 linq to sql。

【问题讨论】:

  • 能否请您提供现有表格之一中的列?它只是一个 ID、名称和值吗?

标签: linq-to-sql asp.net-mvc-2 lookup


【解决方案1】:

假设您的表有IDNameValue 列。现在只有一个表,该表很可能看起来像这样:

create table Lookup
(
    LookupID int not null identity
        primary key,
    LookupTypeID int not null
        references LookupType(LookupTypeID),
    Name nvarchar(50) not null,
    Value int not null,
    unique(EnumTypeID, Name)
)
go

此表将确保在相同类型中的名称不会发生冲突。

无论如何。你当然可以有一个类似的应用程序(不是数据)模型类

public class EnumValue
{
    public int Id { get; set; }

    [Required]
    public string Name { get; set; }

    [Required]
    public int Value { get; set; }
}

因此,每当您获得某种类型的值时,您始终可以生成其中的 IList<EnumValue> 并将它们提供给特定的下拉菜单。

由于您没有提供任何有价值的数据,因此该表和类可以省略列/属性Value,因为根据内部工作原理,它可能根本不需要。但是您将最了解这一点,因为您了解您的应用程序要求。而不是这个列/属性,只有 ID 可以解决问题。

【讨论】:

【解决方案2】:

我实际上使用了一种稍微不同的方法。我创建了一个具有复合主键 LookupName 和 LookupValue 的表。然后在数据上下文中,我声明了一个将查找名称作为参数的方法,然后带来了查找名称与此参数匹配的查找值列表。在原始表(例如联系人)中,我创建了一个名为 status 的字段,其中将保存所选值。然后在控制器中,我使用 viewdata 创建下拉列表。

示例:_db 表示数据上下文

Viewdata('Status')= new selectlist(_db.Getlookupname('status'),'lookupname','lookupname')

然后在视图中

html.dropdownlist('status')

我还使用在目标表“联系人”中找到的相同字段名“状态”命名下拉列表。

而且它有效,没有任何复杂性或错误。 谢谢您的帮助。我希望这对其他人有帮助!

【讨论】:

    【解决方案3】:

    这是一个关于如何实现通用查找服务的教程。

    http://wtfperminute.blogspot.com/2011/02/working-with-reference-data-lookups.html

    与您所做的类似,但可能更全面。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-25
      • 2010-12-28
      • 1970-01-01
      • 1970-01-01
      • 2012-03-13
      • 1970-01-01
      • 1970-01-01
      • 2020-02-21
      相关资源
      最近更新 更多