ASP .NET MVC 动态列名?
Posted
技术标签:
【中文标题】ASP .NET MVC 动态列名?【英文标题】:ASP .NET MVC dynamic column name? 【发布时间】:2011-12-27 03:49:21 【问题描述】:数据库表有这样的字段:
fld_column1
fld_column1_item_1
fld_column1_item_2
fld_column1_item_3
fld_column2
fld_column2_item_1
fld_column2_item_2
fld_column2_item_3
fld_column3
fld_column3_item_1
fld_column3_item_2
fld_column3_item_3
我在控制器中这样做了:
ViewBag.Columns = from col in _db.tbl_columns
select col;
return View();
在视图中我这样做了:
<% foreach (tbl_columns col in (IEnumerable)ViewBag.Columns)
%>
<%= col.fld_column1_item1 %>
<%= col.fld_column2_item1 %>
<%= col.fld_column3_item1 %>
<% %>
现在我的问题很简单:是否可以添加一个自动执行“column1”、“column2”等的变量?我该如何使用它?
【问题讨论】:
您能否更明确地说明这些列的实际内容(例如,它们的名称是什么?)这样我们可以更轻松地为您提供帮助。 你真的应该使用模型而不是 viewbag 来将集合带到视图中。 @GeorgeStocker 列名就像我在上面发布的一样,它们包含菜单名称。克里斯我不太确定我是否正确。你能贴一个很短的样本吗? :) 您将拥有一个视图模型,其中一个属性是 Collection。因此,您将返回 View(Model),并在视图中访问它 Model.Collection。然后你可以像这样旋转它:forarch(var item in Model.Collection) 【参考方案1】:您似乎可以更改您的表架构,这在那时很容易做到。
新表架构:
Id Column Item ParentId
1 1 null null
2 1 1 1
3 1 2 1
3 1 3 1
4 2 null null
5 2 1 4
6 2 2 4
6 2 3 4
7 3 null null
8 3 1 7
9 3 2 7
9 3 3 7
现在,您可以通过以下(伪代码)遍历它们中的每一个:
foreach (var rows in columns)
foreach (var row in rows)
<%= row.Item %>
【讨论】:
这个项目的表模式是这样制作的,我只需要完成项目的其余部分:) 但是我也认为它应该有所不同,就像你提到的那样,我将不得不讨论并决定。感谢您的帮助!【参考方案2】:我同意其他人的观点,您应该使用视图模型。但是,对于当前的表结构,您仍然需要遍历模型并显示每个属性。如果您有能力更改数据库架构,我会按照 George Stocker 的建议将其展平。
【讨论】:
以上是关于ASP .NET MVC 动态列名?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 ASP.NET Core MVC 中使用 select 标签动态编辑数据库表?