簡體   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