C# ASP.NET MVC-使用数组值在模型字段中循环,例如模型。[数组值]
我试图使用数组来循环模型字段 @Html.DisplayNameFormodel=>model.[fld],其中fld位于数组中 FLD见下面的代码。请让我知道怎么做C# ASP.NET MVC-使用数组值在模型字段中循环,例如模型。[数组值],c#,arrays,asp.net-mvc,model,C#,Arrays,Asp.net Mvc,Model,我试图使用数组来循环模型字段 @Html.DisplayNameFormodel=>model.[fld],其中fld位于数组中 FLD见下面的代码。请让我知道怎么做 @model IEnumerable<SchoolAutomationSite.Models.tblClass> @{ ViewBag.Title = "List Of Classes"; } <h2>@ViewBag.Title</h2>
@model IEnumerable<SchoolAutomationSite.Models.tblClass>
@{
ViewBag.Title = "List Of Classes";
}
<h2>@ViewBag.Title</h2>
<p>
@Html.ActionLink("Create New Class", "Create")
</p>
<table class="table">
<tr>
这是数组
如何做到以上几行
您可以将dotNet对象转换为字典,然后遍历keys集合。这是我过去使用过的一种扩展方法:
public static class ObjectExtensions
{
/// <summary>
/// Turns object into dictionary
/// </summary>
/// <param name="o"></param>
/// <returns></returns>
public static IDictionary<string, TVal> ToDictionary<TVal>(this object o)
{
if (o != null)
{
var props = TypeDescriptor.GetProperties(o);
var d = new Dictionary<string, TVal>();
foreach (var prop in props.Cast<PropertyDescriptor>())
{
var val = prop.GetValue(o);
if (val != null)
{
d.Add(prop.Name, (TVal)val);
}
}
return d;
}
return new Dictionary<string, TVal>();
}
}
然后这样称呼它:
var fields = Model.ToDictionary();
foreach (var key in fields.Keys) {
<td>
@fields[key]
</td>
}
或者,使用flds阵列:
var fields = Model.ToDictionary();
foreach (var fld in flds) {
<td>
@fields[fld]
</td>
}
数组是字符串[]flds,而不是字符串[]DisplayName。所以这不是问题,这只会降低视图代码的可读性,为什么不继续使用更详细的代码呢?这将只是flds{@fld}中的@foreach var fld-但是为什么要这样做呢?首先,我需要获取在标题中使用数组的显示名。其次,我需要使用数组来获取行值。此外,我可以在阵列中添加任何新的FLD,而无需更改下面的代码。您可能也想根据您尝试迭代的模型/对象筛选属性…我正在寻找一个简单的解决方案。而且它并没有真正回答这个问题,它确实为您提供了一种迭代模型属性的方法;这不是你想要的吗?一旦你知道你可以对属性/值做你想做的事情…你也可以看看这个StackOverflow问题,寻找一个替代方案:
var fields = Model.ToDictionary();
foreach (var key in fields.Keys) {
<td>
@fields[key]
</td>
}
var fields = Model.ToDictionary();
foreach (var fld in flds) {
<td>
@fields[fld]
</td>
}