Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 枚举ViewData.Model的所有属性_C#_Asp.net Mvc_Viewdata - Fatal编程技术网

C# 枚举ViewData.Model的所有属性

C# 枚举ViewData.Model的所有属性,c#,asp.net-mvc,viewdata,C#,Asp.net Mvc,Viewdata,我正在尝试使用PartialView创建一个通用网格。我将推送任何模型,它将输出一些html和js,以便我可以重用。但为此,我需要dynamic类型的IEnumerable,现在我需要从ViewData.model中获取传递模型的所有属性,因为这是我设置模型的地方。但我找不到具体的解决办法。 有人能给我指一下正确的方向吗?这将是一个很大的帮助。我认为没有必要使用PartialView我将为此创建一个HTML帮助程序。然后,html助手只接受一个简单的对象作为模型。在助手中,您可以构造表(使用字

我正在尝试使用
PartialView
创建一个通用网格。我将推送任何模型,它将输出一些html和js,以便我可以重用。但为此,我需要
dynamic
类型的
IEnumerable
,现在我需要从
ViewData.model
中获取传递模型的所有属性,因为这是我设置模型的地方。但我找不到具体的解决办法。

有人能给我指一下正确的方向吗?这将是一个很大的帮助。

我认为没有必要使用
PartialView
我将为此创建一个HTML帮助程序。然后,html助手只接受一个简单的
对象
作为模型。在助手中,您可以构造表(使用字符串),然后枚举对象模型的所有属性

这可以很容易地通过创建一个html助手来实现

public static class HtmlHelpers
{
    public static IHtmlString ModelTableForm(this HtmlHelper html, object model)
    {
        StringBuilder modelTable = new StringBuilder();
        modelTable.Append("<table>");
        modelTable.AppendFormat("<caption>{0}</caption>", model.GetType().Name);
        modelTable.Append("<tbody>");

        foreach (var property in model.GetType().GetProperties())
            modelTable.Append(addModelRow(property.Name, property.GetValue(model, null)));
        modelTable.Append("</tbody>");
        modelTable.Append("</table>");
        return html.Raw(modelTable.ToString());
    }

    static string addModelRow(string name, object value)
    {
        StringBuilder row = new StringBuilder();
        row.Append("<tr>");
        row.AppendFormat("<td>{0}</td>", name);
        row.AppendFormat("<td>{0}</td>", value);
        row.Append("</tr>");
        return row.ToString();
    }
}
这将生成一个表(尽管它需要更多的样式工作)。作为

我的建议是添加一些样式,或者属性类型检查修改助手显示不同属性类型的方式。(即如果属性继承IEnumerable,则使用递归将所有条目和属性枚举到子表中)


无论如何。希望这有帮助

我认为没有必要使用
部分视图
我会为此创建一个HTML帮助程序。然后,html助手只接受一个简单的
对象
作为模型。在助手中,您可以构造表(使用字符串),然后枚举对象模型的所有属性

这可以很容易地通过创建一个html助手来实现

public static class HtmlHelpers
{
    public static IHtmlString ModelTableForm(this HtmlHelper html, object model)
    {
        StringBuilder modelTable = new StringBuilder();
        modelTable.Append("<table>");
        modelTable.AppendFormat("<caption>{0}</caption>", model.GetType().Name);
        modelTable.Append("<tbody>");

        foreach (var property in model.GetType().GetProperties())
            modelTable.Append(addModelRow(property.Name, property.GetValue(model, null)));
        modelTable.Append("</tbody>");
        modelTable.Append("</table>");
        return html.Raw(modelTable.ToString());
    }

    static string addModelRow(string name, object value)
    {
        StringBuilder row = new StringBuilder();
        row.Append("<tr>");
        row.AppendFormat("<td>{0}</td>", name);
        row.AppendFormat("<td>{0}</td>", value);
        row.Append("</tr>");
        return row.ToString();
    }
}
这将生成一个表(尽管它需要更多的样式工作)。作为

我的建议是添加一些样式,或者属性类型检查修改助手显示不同属性类型的方式。(即如果属性继承IEnumerable,则使用递归将所有条目和属性枚举到子表中)


无论如何。希望这有帮助

谢谢。我没想到。这也会起作用。但我的问题仍然是,如果我必须做我在问题中提到的事情。我仍然会被卡住。我个人会在助手上做这件事,而不是部分,因为你的代码会更干净。使用分部,您仍然需要为属性编写枚举逻辑,如果您想扩展属性值的显示方式,您可能会发现分部变得非常复杂。谢谢。我想现在和助手一起去吧。非常感谢您的帮助:)但为了便于讨论,如果我使用的是Helpers,那么我就错过了在
PartialView
中获得的格式和语法突出显示。将字符串作为代码输出是一个噩梦。谢谢。我没想到。这也会起作用。但我的问题仍然是,如果我必须做我在问题中提到的事情。我仍然会被卡住。我个人会在助手上做这件事,而不是部分,因为你的代码会更干净。使用分部,您仍然需要为属性编写枚举逻辑,如果您想扩展属性值的显示方式,您可能会发现分部变得非常复杂。谢谢。我想现在和助手一起去吧。非常感谢您的帮助:)但为了便于讨论,如果我使用的是Helpers,那么我就错过了在
PartialView
中获得的格式和语法突出显示。将字符串作为代码输出是一场噩梦。