Mono / .NET 4 MVC4视图viewmodel包含动态类型的行列表。 使用WebMatrix Query()方法从数据库返回此列表。 使用动态类型,因为在设计时不知道返回列的数量,用户可以选择不同的select语句。
public class HtmlReportViewModel {
public IEnumerable<dynamic> Rows { get; set; }
}
如何以原始格式向用户显示查询结果?
我尝试过Razor视图
<body><table>
@foreach (var r in Model.Rows)
{
<tr> @r.ToString() </tr>
}
</table>
</body>
但输出
WebMatrix.Data.DynamicRecord
每行。 如何在html表elemet或其他表格形式中显示行数据值? 它有一些帮助MVC4从这生成html元素? Applicaton也应该在Mono下运行,所以我不确定WebGrid可以用于此。不知道在Mono中是否可以使用WebGrid。
除了WebMatrix Query()之外,还可以使用ADO.NET DataReader来获取动态数据 如果这有帮助。
答案 0 :(得分:1)
我不知道你的价值观,但也许这种扩展方法会有所帮助:
public static class MyHtmlExtensions
{
public static string DisplayForDynamicModel(this HtmlHelper html, dynamic model)
{
Type t = model.GetType();
var props = t.GetProperties();
StringBuilder sb = new StringBuilder();
foreach (var p in props)
{
string value = p.GetValue(model).ToString();
sb.AppendFormat("<tr>{0}</tr>", value);
}
return sb.ToString();
}
}
你可以像这样使用它:
@foreach (var r in Model.Rows)
{
@Html.DisplayForDynamicModel(r)
}