我目前正在使用Html.EditorFor<>生成编辑器字段的方法,但我想使用类似的东西以只读格式显示字段信息,例如详细信息页面,即带有字段名称后跟带有字段值的标签的标签。
MVC目前是否有任何等效产生此功能?或者我将不得不创建一个自定义助手?
提前致谢。
编辑:我知道DisplayFor和LabelFor,它只是手动必须组合这些吗?
答案 0 :(得分:36)
使用
<%= Html.DisplayFor(model => model.Property) %>
或者,如果您想查看只读(禁用)文本框
<%= Html.TextBoxFor(model => model.Property, new { disabled="disabled", @readonly = "readonly" })%>
答案 1 :(得分:4)
我可能遗漏了一些东西,但你不能只使用Html.LabelFor
吗?
修改:可能需要使用Html.LabelFor
和Html.DisplayFor
组合
答案 2 :(得分:4)
您可以使用
Html.DisplayFor(...)
文档:
http://msdn.microsoft.com/en-us/library/system.web.mvc.html.displayextensions.displayfor.aspx
答案 3 :(得分:3)
我有一个文本框控件,它绑定到Model的一个属性。但是,我有一个JQueryUI滑块,我用它来填充值,而不是让用户直接编辑它。因此,我希望此值为只读,但仍绑定到模型。 我无法使用Html.EditorFor(...)应用html属性,我可以使用Html.TextboxFor(...)方法。但是,如果我将HTML“禁用”属性设置为“禁用”值(根据zihotki的解决方案),则默认情况下MVC框架在发回时不会将文本框中的值绑定回模型上的绑定属性到控制器方法(见Model Binding With Disabled Textbox)。 我的解决方案是使用Html.TextboxFor并将设置为 readonly属性,
@Html.TextBoxFor(model => model.MyProperty, new { @readonly = "readonly" })
然后包含一个输入的CSS条目:readonly灰色只读框:
input:read-only
{
background-color: #E6E6E6;
}
答案 4 :(得分:3)
MVC 5,Bootstrap 3示例。
<div class="col-md-6">
@Html.LabelFor(m => m.UserModel.company, htmlAttributes: new {@class = "control-label tc-label"})
@Html.EditorFor(m => m.UserModel.company, new {htmlAttributes = new { disabled = "disabled", @readonly = "readonly", @class = "form-control col-md-6"}})
@Html.ValidationMessageFor(m => m.UserModel.company, "", new {@class = "text-danger"})
</div>
答案 5 :(得分:0)
创建一个返回字符串而不是表单字段的EditorFor Template。然后使用UIHint
E.g。这是StringReadOnly EditorFor template
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %><%:ViewData.TemplateInfo.FormattedModelValue.ToString()%>
在模型中
[UIHint("StringReadOnly")]public string NoChangeMe {get;set}
然后你可以用EditorFor调用该字段,它将输出一个字符串。
当然这个领域没有提交,但这就是我想要发生的事情。