[英]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.