gpt4 book ai didi

c# - 如何在没有 ASP.NET 5 MVC 模型的情况下从查询访问数据

转载 作者:行者123 更新时间:2023-11-30 16:50:16 25 4
gpt4 key购买 nike

我正在尝试使用 EF7 在 Controller 内执行查询并在表中显示数据。

这是我的模型:

public class Resources
{
public int id { get; set; }
public string name { get; set; }
public string descr { get; set; }
public string resourcePath { get; set; }
public string method { get; set; }
public string format { get; set; }

public virtual ICollection<MeasureTags> Tags { get; set; }
}

public class MeasureSets
{
public int id { get; set; }
public string name { get; set; }
public string descr { get; set; }
public string userName { get; set; }
public bool isPublic { get; set; }

public virtual ICollection<MeasureTags> Tags { get; set; }
}

public class MeasureTags
{
public int id { get; set; }
public string name { get; set; }
public string userName { get; set; }
public bool isPublic { get; set; }
public int sortOrder { get; set; }

[ForeignKey("MeasureSets")]
public int msId { get; set; }
public virtual MeasureSets ms { get; set; }

public virtual Resources res { get; set; }
}

这是 Controller 中的连接查询:

//get users measure sets
var m_sets = from t in _context.MeasureTags
join s in _context.MeasureSets on t.ms.id equals s.id
where s.userName == User.Identity.Name
select new {
id = t.id,
set = s.name,
tag = t.name,
res = t.res.name
};

return View(m_sets.ToArray());

在 View 中,我有一个 foreach 循环,它能够正确提取每一行而不是列。错误:'object' 不包含 'id' (item.id) 的定义

<tbody>
@foreach (var item in Model)
{
string tagid = "tag" + item.id;
<tr>
<td><input type="checkbox" checked id="@tagid"/></td>
<td>@item.set</td>
<td>@item.tag</td>
<td>@item.res</td>
</tr>
}
}
</tbody>

我还为结果添加了一个额外的模型,但仍然没有成功。错误是“ManageTagTableModel”不包含“GetEnumerator”的公共(public)定义

public class TagTable
{
public int id { get; set; }
public string set { get; set; }
public string tag { get; set; }
public string res { get; set; }
}

public class ManageTagTableModel : IEnumerable
{
public IEnumerator GetEnumerator()
{
return ((IEnumerable)TagTable).GetEnumerator();
}
}

问题是:如果可能,我如何在不需要额外模型的情况下访问“新的”通用对象属性?

最佳答案

您需要将查询投影到 TagTable 的新实例中

var m_sets = from t in _context.MeasureTags
join s in _context.MeasureSets on t.ms.id equals s.id
where s.userName == User.Identity.Name
select new TagTable {
id = t.id,
set = s.name,
tag = t.name,
res = t.res.name
};
return View(m_sets.ToArray());

然后在 View 中

@model IEnumerable<TagTable>
@foreach (var item in Model)
{
<tr>
<td>@item.set</td>
....

关于c# - 如何在没有 ASP.NET 5 MVC 模型的情况下从查询访问数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35328939/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com