MVC @ Html.Display()

问题描述 投票:5回答:4

我有类似的东西:

 <input type="text" name="TerrMng" id="TerrMng"/>  

在HTML中。使用@ Html.Display相当于上面的内容?

我尝试过使用:@Html.Display("TerrMng", TerrMng)

但没有成功。请注意,我喜欢使用@ Html.Display但不确定如何翻译ID值以便显示。

asp.net-mvc razor
4个回答
4
投票

如果您只是想显示数据而不允许用户编辑信息,这应该可以解决问题。

@Html.DisplayFor(m => m.TerrMng);

编辑:

what-is-the-html-displayfor-syntax-for是stackoverflow上的另一个问题,它可能会为您提供更多指导。

编辑:

PageLoad上不存在TerrMng,因此您无法以这种方式使用Html.Display。您需要创建它并使用从jQuery接收的值填充其值。在这种情况下,您必须执行以下操作:

HTML

 @Html.Display("TerrMng"); // This creates the label with an id of TerrMng

jQuery的

 $("#TerrMng").val(TerrMng); // This puts the value of the javascript variable into the label

5
投票

Display方法不用于创建输入框。你想要使用:

@Html.TextBoxFor(m => m.TerrMng);

templated helper方法:

@Html.EditorFor(m => m.TerrMng);

我假设您要使用模型绑定。如果没有,如果您真的只想使用帮助程序来创建输入标记,请使用:

@Html.TextBox("TerrMng");

这将发送给客户:

<input id="TerrMng" type="text" value="" name="TerrMng">

如果model.TerrMng是“”或String.Empty,上面的前两种方法将产生完全相同的html。如果由于某种原因你不想要value属性,你需要自己输入。


3
投票

你可以尝试一下这个。这不是确切的,但你可以得到一些想法。

@Html.TextBoxFor(yourmodel => model.yourModelFieldname, null)

0
投票

当你的模型在编译时不知道,或者你喜欢使用字符串而不是强类型时,使用@Html.Display()而不是@Html.DisplayFor()。例如,这两个是等价的(假设您的模型是某个类):

@Html.DisplayFor(m => m.MyProperty)

@Html.Display("MyProperty")

但Display()方法的另一个很酷的功能是它也可以在ViewData中进行查找,而不仅仅是在Model类中。例如,这是一种在随机对象上显示属性的HTML的方法,因为我们知道它有一个名为“Blah”的属性(对象的类型并不重要):

@{ ViewData["itsawonderfullife"] = SomeObject; }
<div>@Html.Display("itsawonderfullife.Blah")</div>

这样,我们告诉HtmlHelper调查ViewData,而不是我们的Model,并显示给定Blah的属性SomeObject

© www.soinside.com 2019 - 2024. All rights reserved.