我正在尝试将ID添加到
@Html.DisplayFor(model => model.ScreenWidth, new { @id = "width"})
然后使用
document.getElementById("width").innerHTML = w;
为什么不起作用?
答案 0 :(得分:6)
DisplayFor
帮助程序不会生成任何HTML标记,只会输出格式化文本。因此,您无法为其添加id
属性。你可以做的是将它包装在一个标签(div或span)中:
<div id="width">
@Html.DisplayFor(model => model.ScreenWidth)
</div>
然后能够操纵此标记的内容:
document.getElementById("width").innerHTML = w;
答案 1 :(得分:0)
另外你也可以使用它
<span id="width">@Html.Displayfor(model => model.ScreenWidth) </span>
答案 2 :(得分:0)
另一种解决方法是创建自定义的显示模板,然后可以使用该模板来呈现值和包含您的<span>
属性的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的改编
在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 :(得分:0)
我假设您只是想显示标签。这就是我完成这项工作的方式。
<label id="lblName">
@Html.Raw(@Model.ObjectA.ObjectB.ObjectC.ToString())
</label>
然后,如果我想在jQuery中更改值,我可以:
$('#lblName').text("New Value");