多表关联解决数据在MVC显示

由于子表的某些字段是父表的外键,正常情况之下,显示的只是一个键值。
如下图的Highlight列,如果这样显示,确实不友好。

如果是在创建或是编辑的模式之下,我们可以使用下拉菜单来解决,如《Html.DropDownListFor练习(2)》 http://www.cnblogs.com/insus/p/3383277.html 。 但在显示时,我们可以写一个函数,来实现一个友好名称显示,但是这样的做法,在MVC里,确实是一种性能之差。那要怎样做,才是一个较折衷办法呢?

Insus.NET解决的办法,就是要获取子表数据时,就做了多表关联,可以参考此篇《MVC 5显示、创建、编辑、删除等功能实练http://www.cnblogs.com/insus/p/3372916.html 中帖出的第一个表函数和一个存储过程:

这样把多表关联之后,直接把外键以及外键值也一样显示出来[FruitCategory_nbr],[CategoryName]。

然后修改models下的FruitKind.cs类,添加一个属性:

最后在视图显示的地方,修改#8行comment out之后,添加#10行代码。

OK,我们再来实时操作演示一下:

多表关联解决数据在MVC显示

时间: 2024-10-10 06:43:39

多表关联解决数据在MVC显示的相关文章

Struts2 接收多表关联的数据

今天在做一个计费移动的时候,使用Struts2 的modelDriver 接收User提交的数据,在User 中关联着用户详细信息表.电话信息表.套餐信息表和管理员信息表:提交上来的数据有电话号码.用户详细地址和个人信息.套餐的名称.套餐的类型等等... @Entity public class User { private int id; private String userName; private String password; private String type; private

MySQL 中两表关联更新数据

通过用户手机号,更新他的添加时间和过期时间,两表关联更改副表内容 UPDATE expand_money e INNER JOIN members m ON e.uid = m.id SET e.add_time=unix_timestamp(),e.expired_time=unix_timestamp()+60*60*24*7 WHERE m.user_phone = '139139139139'

数据库单表关联实现数据计数功能(表格自身关联)

注:本博文为博主原创,转载请注明出处. 问题提出:在数据库中有这样一张表格,其中主要包含三个字段,GoodsId(货物编号),TypeId(类型编号),State(状态).货物编号不重复,GoodsId与TypeId之间属于N对1的关系,State为状态主要分为两种"null"和"1","null"表示该货物未卖出UnSold,"1"表示货物Sold.现在有如下业务,统计出类型编号下有多少货物Sold,多少货物UnSold.

数据迁移之sql server2005 中两表关联更新数据操作

近期在做数据迁移的工作,老系统的数据迁移到新系统,当中麻烦的确不少,因为是重新设计的系统与老系统中有太多的不一至性,例如表结构,字段的处理,像附件的存储方式,还有历史遗留数据... 后面会慢慢的把相关技术处理细节展现出来,当然,难度不大,只是琐碎事情太多. 今天就简单来看看数据的关联更新. 业务场景: 同一个业务,有一张主表及一张子表,字段差不多,只是老系统中主键生成方式GUID,而新的主键生成方式自增长型,这里就不论合不合理了,来看看我们的问题. 我们要做的就是把老数据导入到新表,并且保持他们

在yii2中展示表关联的数据

方法一: 在数据库中构建数据表的时候,首先把表之间的关联关系也定义进去: 方法二: 在模型中定义表之间的关联关系,如下: public function getAuthor(){ return $this->hasOne(Author::className(),['id'=>'author_id']); } 此方法中的getAuthor为一对一的关系. 在视图中利用yii\helpers\ArrayHepler 类来填充下拉列表内容: echo $form->field($model,'

mybtis两表关联查询相同名字字段显示混乱

如图 由于表 trade 和表 database 都有name字段.代码执行之后结果集中类database中的name值被trade中的name值覆盖.无法得到正确结果. 解决方法1:直接修改数据库字段,把表trade中name改成tradename,当然修改数据库不推荐. 如果这个表只有你在操作,相关代码不多,也没问题. 解决方法2:修改映射database中column="dname",并且在sql中设置别名 AS dname.推荐此方法. 原文地址:https://www.cnb

2014.11.26 向MySQL数据表中插入数据时,显示“syntax error”时应检查

插入语句: "insert into tablename (a,b,c,d) values(1,2,3,4)" 插入结果: a b c d 1 2 3 4 有误时,请检查: 1.名值对有没有写错: 2.代码的字符串处理有没有问题: 3.代码中的列名和表中的列名是不是一一对应的: 4.定义的列名是否跟SQL语句中的关键字重复,例如dec等.

sql 两张表关联修改数据

Hr_DepartPlanWeek 部门周计划表:DepartMent部门名称,DepartMentID部门ID. g_group部门表:gname部门名称,gid部门id 根据DepartMentID管理g_group表修改DepartMent update Hr_DepartPlanWeek set DepartMent=t.gname from (select gname,gid from g_group left join Hr_DepartPlanWeek on g_group.GId

新增sql后面可以跟where条件(多表关联新增数据和复制数据)

1.在sql中新增数据的时候,必须条件是,insert的字段在(select)的表里面的字段是有的 insert into table_name( v1,v2,v3) VALUES (select a,b,c from 查询表 where 条件) 2.此sql可复制数据 insert into inj_wash_updatelog g (g.proid,g.update_date)select t.proid,t.subdate from inj_wash_pro twhere t.proid