繁体   English   中英

如何在 .Net Core 2.0 中为“asp-for”传递字符串值

[英]How can I pass string value for “asp-for” in .Net Core 2.0

我想创建一个通用视图,但是我在使用 asp-for 接受来自变量的字符串输入时遇到了问题。

我遇到的问题与此非常相似: How can I pass string value for "asp-for" in asp net 5

但是,该票证中提供的答案在 .Net Core 中不起作用。

这是剃刀页面的示例:

@foreach (var property in ViewData.ModelMetadata.Properties)
{
    var propertyName = property.DisplayName ?? property.PropertyName;

    <div class="form-group">
        <label asp-for="@propertyName" class="col-md-2 control-label"></label>
        <div class="col-md-10">
            <input asp-for="@propertyName" class="form-control" />
            <span asp-validation-for="@propertyName" class="text-danger"></span>
        </div>
    </div>

}

上面我正在尝试为对象的每个属性创建一个输入字段、输入名称和验证。

尝试这个

@foreach (var property in ViewData.ModelMetadata.Properties)
{
    var propertyName = property.DisplayName ?? property.PropertyName;

    <div class="form-group">
        <label class="col-md-2 control-label">@propertyName</label>
        <div class="col-md-10">
            <input asp-for="@property" class="form-control" />
            <span asp-validation-for="@property" class="text-danger"></span>
        </div>
    </div>

}

看起来这只能通过Html.Label()等实现。 请看这个答案: https : //stackoverflow.com/a/58130119/332528

所以在你的情况下,它将是:

@foreach (var property in ViewData.ModelMetadata.Properties)
{
    var propertyName = property.DisplayName ?? property.PropertyName;

    <div class="form-group">
        @Html.Label(propertyName, null, new { @class = "col-md-2 control-label" })
        <div class="col-md-10">
            @Html.Editor(propertyName, new { htmlAttributes = new { @class = "form-control" } })
            @Html.ValidationMessage(item, new { htmlAttributes = new { @class = "text-danger" } })
        </div>
    </div>

}

我知道这很糟糕,但似乎没有更好的方法......似乎在 Razor 中,如果你向侧面走半步,一切都会完全破碎。 我忍不住将它与 JSX 进行比较,在 JSX 中,JS 和 HTML 的混合可以正常工作,没有任何意外或神奇的语法。 我希望我们对 C# 有类似的东西......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM