【发布时间】: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
我正在尝试将 id 添加到
@Html.DisplayFor(model => model.ScreenWidth, new { @id = "width"})
然后使用
document.getElementById("width").innerHTML = w;
为什么它不起作用?
【问题讨论】:
标签: javascript asp.net-mvc razor
DisplayFor 助手不生成任何 HTML 标记,它只是输出格式化的文本。所以你不能给它添加id 属性。您可以做的是将其包装在标签(div 或 span)中:
<div id="width">
@Html.DisplayFor(model => model.ScreenWidth)
</div>
然后就可以操作这个标签的内容了:
document.getElementById("width").innerHTML = w;
【讨论】:
另一种方法是创建一个自定义的显示模板,然后您可以使用该模板来呈现值和包含id 属性的<span> 标记。
在 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
在 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
【讨论】:
您也可以使用它
<span id="width">@Html.Displayfor(model => model.ScreenWidth) </span>
【讨论】:
我假设您只是想显示一个标签。这就是我实现这一目标的方式。
<label id="lblName">
@Html.Raw(@Model.ObjectA.ObjectB.ObjectC.ToString())
</label>
那么如果我想改变jQuery中的值,我可以:
$('#lblName').text("New Value");
【讨论】: