【问题标题】:replacing html helpers by tag helpers用标签助手替换 html 助手
【发布时间】:2017-05-10 15:18:12
【问题描述】:

我想用 View 中的标签助手替换 html 助手。

为此我替换:@model IEnumerable<Person>

@model IList<Person>

@Html.DisplayNameFor(model => model.Name)

<label asp-for="@Model[0].Name"></label>

但我应该改用什么:@Html.DisplayFor(modelItem => item.Name)?

<input asp-for="@item.Name" readonly />?

看起来不太对。

更新:只是为了澄清问题:@Html.DisplayNameFor<label asp-for 都在 html 中生成标签。

@Html.DisplayFor 只生成文本。哪个标签助手可以替换它?我不想使用input 来显示文本。

【问题讨论】:

    标签: razor view asp.net-core-mvc html-helper tag-helpers


    【解决方案1】:

    当您使用IList 时,您可以双向访问该属性。

    @model IList<WebApp.Models.Person>
    
    <input type="text" asp-for="@Model[0].Name" />
    
    @foreach(var item in Model)
    {
        <input type="text" asp-for="@item.Name" readonly/>
    
    }
    

    如果你使用IEnumerable,你需要调用ToList方法来访问属性而不使用foreach

    @model IList<WebApp.Models.Person>
    @{
    var model2 = Model.ToList();
    }
    
    <input type="text" asp-for="@model2[0].Name" />
    
    @foreach(var item in Model)
    {
      <input type="text" asp-for="@item.Name" readonly/>
    }
    

    【讨论】:

    • 问题是:我应该使用输入来显示信息吗?它在 html 中生成文本框。
    • 我想要与@Html.DisplayFor 相同的结果,但使用标签助手。
    • 为了显示信息,您可以像这样使用带有 razor 的 HTML 标签。 &lt;ul&gt; @foreach(var item in Model) { &lt;li&gt;@item.Name&lt;/li&gt; } &lt;/ul&gt;
    猜你喜欢
    • 1970-01-01
    • 2011-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多