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