【问题标题】:How to add id to @Html.DisplayFor如何将 id 添加到 @Html.DisplayFor
【发布时间】:2017-01-30 07:25:06
【问题描述】:

我正在尝试将 id 添加到

@Html.DisplayFor(model => model.ScreenWidth, new { @id = "width"})

然后使用

document.getElementById("width").innerHTML = w;

为什么它不起作用?

【问题讨论】:

    标签: javascript asp.net-mvc razor


    【解决方案1】:

    DisplayFor 助手不生成任何 HTML 标记,它只是输出格式化的文本。所以你不能给它添加id 属性。您可以做的是将其包装在标签(div 或 span)中:

    <div id="width">
        @Html.DisplayFor(model => model.ScreenWidth)
    </div>
    

    然后就可以操作这个标签的内容了:

    document.getElementById("width").innerHTML = w;
    

    【讨论】:

    • HTML.DisplayFor 没有生成任何 HTML 标记是错误的,至少在 ASP.NET core 3.1 中是这样。它返回一个 IHtmlContent 实例。当使用带有布尔值的 HTML.DisplayFor 时,它会生成一个复选框类型的输入。 。您的方法的问题是,对于每个 HTML.DisplayFor 我们需要包装一个 div,然后使用 javascript。
    【解决方案2】:

    另一种方法是创建一个自定义的显示模板,然后您可以使用该模板来呈现值和包含id 属性的&lt;span&gt; 标记。

    如果您希望将您的 id 设置为自定义的,而不是属性的名称:

    在 Views\Shared\DisplayTemplates 中创建一个名为 SpanWithId.cshtml 的文件(如果缺少这些文件夹,请创建其中的任何一个)并添加以下代码:

    <span id="@(ViewBag.HtmlID)">@Model</span>
    

    然后在你看来,你可以这样使用它:

    @Html.DisplayFor(model => model.ScreenWidth, "SpanWithId", new { HtmlID = "project-name" })
    

    该代码改编自Phillip Smith's答案here

    如果您希望将您的 id 和 name 设置为属性的名称:

    在 Views\Shared\DisplayTemplates 中创建一个名为 SpanWithIdAndName.cshtml 的文件(如果缺少这些文件夹,请创建它们)并添加以下代码:

    @{var fieldName = ViewData.TemplateInfo.HtmlFieldPrefix;}
    <span id="@fieldName" name="@fieldName">@Model</span>
    

    然后在你看来,你可以这样使用它:

    @Html.DisplayFor(model => model.ScreenWidth, "SpanWithIdAndName")
    

    该代码改编自 David Clarke's 答案 here

    【讨论】:

      【解决方案3】:

      您也可以使用它

            <span id="width">@Html.Displayfor(model => model.ScreenWidth) </span>
      

      【讨论】:

        【解决方案4】:

        我假设您只是想显示一个标签。这就是我实现这一目标的方式。

        <label id="lblName">
            @Html.Raw(@Model.ObjectA.ObjectB.ObjectC.ToString())
        </label>
        

        那么如果我想改变jQuery中的值,我可以:

        $('#lblName').text("New Value");
        

        【讨论】:

          猜你喜欢
          • 2013-09-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-04-25
          • 2015-04-21
          • 2012-05-10
          • 1970-01-01
          相关资源
          最近更新 更多