在 mvc3 中使 Html.Editorfor 字段只读

发布于 2024-12-05 13:06:57 字数 408 浏览 1 评论 0原文

我正在使用这个编辑器模板(位于我的解决方案中的 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

尐籹人 2024-12-12 13:06:57
<%= Html.EditorFor(x => x.ModifiedDate, new { @readonly = "readonly" }) %>

更新:

好的,既然您向我发送了示例项目,那么问题如下:

  1. 您在 ~/Views/Shared/EditorTempletes 文件夹中存在拼写错误。它应该是~/Views/Shared/EditorTemplates
  2. 您的编辑器模板必须名为 DateTime.ascx,而不是 DateTime.aspx。因此,标题必须如下所示(使用 <%@ Control ... 而不是 <%@ Page ...):

    <前><代码><%@ 控制
    语言=“C#”
    Inherits="System.Web.Mvc.ViewUserControl"
    %>
    <%= Html.TextBox(
    "",
    (Model.HasValue ? Model.Value.ToString("MM/dd/yyyy") : string.Empty),
    查看数据
    ) %>

<%= Html.EditorFor(x => x.ModifiedDate, new { @readonly = "readonly" }) %>

UPDATE:

OK, now that you sent me the sample project here are the issues:

  1. You have a spelling mistake in the ~/Views/Shared/EditorTempletes folder. It should be ~/Views/Shared/EditorTemplates.
  2. You editor template must be called DateTime.ascx and not a DateTime.aspx. And because of this the header must look like this (use <%@ Control ... instead of <%@ Page ...):

    <%@ Control 
        Language="C#" 
        Inherits="System.Web.Mvc.ViewUserControl<System.DateTime?>" 
    %>
    <%= Html.TextBox(
        "", 
        (Model.HasValue ? Model.Value.ToString("MM/dd/yyyy") : string.Empty), 
        ViewData
    ) %>
    
流绪微梦 2024-12-12 13:06:57

您可以使用:

@Html.DisplayFor()

You can use:

@Html.DisplayFor()
一杯敬自由 2024-12-12 13:06:57

使用 System.Web.Mvc 命名空间中的 [HiddenInput] 属性来装饰该属性。

Decorate the property with the [HiddenInput] Attribute from the System.Web.Mvc namespace.

白云悠悠 2024-12-12 13:06:57

我用这种方式显示只读信息:

@Html.DisplayFor(model => model.CadastradoEm, new { @class = "form-control" })
@Html.HiddenFor(model => model.CadastradoEm)

除了显示文本之外,您还需要包含一个隐藏输入,因为 DisplayFor() 不会生成一个控件回帖
;)

I use to show read-only information this way:

@Html.DisplayFor(model => model.CadastradoEm, new { @class = "form-control" })
@Html.HiddenFor(model => model.CadastradoEm)

You need to include a hidden input in addition to the display text, cause DisplayFor() doesn't generate a control that posts back
;)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文