MVC @ Html.Display()

时间:2011-11-01 15:00:14

标签: asp.net-mvc razor

我有类似的东西:

 <input type="text" name="TerrMng" id="TerrMng"/>  
HTML中的

。使用@ Html.Display?

等同于上述内容

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

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

4 个答案:

答案 0 :(得分: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属性,你需要自己输入它。

答案 1 :(得分:3)

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

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

答案 2 :(得分:3)

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

@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

答案 3 :(得分: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,并显示给定{{1} }。