c# - asp-for TagHelper结合反射的使用方法

标签 c# asp.net-core razor asp.net-core-tag-helpers

我有一个 Foo 类,它包含很多属性,我想将所有属性迭代到一个表单中。该网站是使用 ASP.NET Core 2.2 和 Razor 构建的。

如何构建 asp-for TagHelper 似乎期望使用反射的 MemberExpression?我在论坛上阅读了几篇关于此的帖子,但没有一个答案符合我的需要。

以下代码段不起作用。

@model Foo;
<h1>Foo Reflective filling example</h1>

    @foreach(var property in typeof(Foo).GetProperties()) {
        <p>
            <div class="row">
                <div class="col-md-3">
                    <label asp-for="@property.Name"></label> @*doesn't work!'*@
                </div>
                <div class="col-md-3">
                    <input asp-for="@property.Name" class="form-control" id="property.Name"/>
                    <span asp-validation-for="@property.Name" class="text-danger"></span>
                </div>
            </div>
        </p>
    }

谢谢你的帮助

最佳答案

InputTagHelper 帮助我们以声明式 编程风格编写代码。当您发现难以通过反射动态呈现不同的字段时,请随意以程序化方式使用@Html.Xyz 等价物

您的代码可以重写如下:

@foreach(var property in typeof(Foo).GetProperties()) {
    <p>
        <div class="row" >
            <div class="col-md-3">
                @Html.Label(@property.Name)
            </div>
            <div class="col-md-3">
                @Html.Editor(@property.Name,  new { htmlAttributes = new{ @class="form-control" } })
                @Html.ValidationMessage(@property.Name, new { htmlAttributes = new { @class="text-danger"} })
            </div>
        </div>
    </p>
}

演示:

我创建了一个自定义的 Foo DTO,如下所示:

public class Foo{
    public int Id {get;set;}
    public string Name {get;set;}
    public string Address {get;set;}
    public DateTime UpdatedAt{get;set;}
}

呈现的形式是:

enter image description here

关于c# - asp-for TagHelper结合反射的使用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58112633/

相关文章:

c# - 使用 LINQ 和 Lambda 加入/在何处

c# - 在 140 个字符中我最多可以存储多少个字符?

c# - 处理与外部登录提供商的 claim

asp.net-mvc - 在 ASP.NET Core 中发现通用 Controller

javascript - 我有一个 JS 函数,它应该根据 DropDownListFor 中的事件更改来更改 td 的innerHTML,但仅适用于初始加载

asp.net-mvc - 在 ASP.Net MVC 中仅编辑部分模型

c# - 如何在 .NET 中正确转义文档名称?

c# - 从字节数组创建正确转义的字符串

asp.net-core - _ViewImports.cshtml 在生产中无法正常工作

jquery - jquery ajax 中的 Url.Action : Second parameter not passed