在 mvc3 中使 Html.Editorfor 字段只读
我正在使用这个编辑器模板(位于我的解决方案中的 Shared\EditorTemplates 文件夹中)
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewUserControl<System.DateTime?>" %>
<%=Html.TextBox("", (Model.HasValue ? Model.Value.ToString("MM/dd/yyyy") : string.Empty), ViewData )%>
,在我看来
@Html.EditorFor(model => model.ModifiedDate)
如何使该字段在视图中只读
I am using this, an editor template (located in the Shared\EditorTemplates folder in my solution)
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewUserControl<System.DateTime?>" %>
<%=Html.TextBox("", (Model.HasValue ? Model.Value.ToString("MM/dd/yyyy") : string.Empty), ViewData )%>
and this in my view
@Html.EditorFor(model => model.ModifiedDate)
how to make this field readonly in the view
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
更新:
好的,既然您向我发送了示例项目,那么问题如下:
~/Views/Shared/EditorTempletes
文件夹中存在拼写错误。它应该是~/Views/Shared/EditorTemplates
。您的编辑器模板必须名为
DateTime.ascx
,而不是DateTime.aspx
。因此,标题必须如下所示(使用<%@ Control ...
而不是<%@ Page ...
):<前><代码><%@ 控制"
语言=“C#”
Inherits="System.Web.Mvc.ViewUserControl
%>
<%= Html.TextBox(
"",
(Model.HasValue ? Model.Value.ToString("MM/dd/yyyy") : string.Empty),
查看数据
) %>
UPDATE:
OK, now that you sent me the sample project here are the issues:
~/Views/Shared/EditorTempletes
folder. It should be~/Views/Shared/EditorTemplates
.You editor template must be called
DateTime.ascx
and not aDateTime.aspx
. And because of this the header must look like this (use<%@ Control ...
instead of<%@ Page ...
):您可以使用:
You can use:
使用 System.Web.Mvc 命名空间中的 [HiddenInput] 属性来装饰该属性。
Decorate the property with the [HiddenInput] Attribute from the
System.Web.Mvc
namespace.我用这种方式显示只读信息:
除了显示文本之外,您还需要包含一个隐藏输入,因为
DisplayFor()
不会生成一个控件回帖;)
I use to show read-only information this way:
You need to include a hidden input in addition to the display text, cause
DisplayFor()
doesn't generate a control that posts back;)