сделать Html.Editorfor поле только для чтения в mvc3 - PullRequest
3 голосов
/ 18 сентября 2011

Я использую этот шаблон редактора (находится в папке 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)

как сделать это поле доступным только для чтения

Ответы [ 4 ]

5 голосов
/ 18 сентября 2011
<%= Html.EditorFor(x => x.ModifiedDate, new { @readonly = "readonly" }) %>

ОБНОВЛЕНИЕ:

Хорошо, теперь, когда вы отправили мне пример проекта, вот проблемы:

  1. У вас есть орфографическая ошибка в ~/Views/Shared/EditorTempletes папка.Это должно быть ~/Views/Shared/EditorTemplates.
  2. Ваш шаблон редактора должен называться DateTime.ascx, а не DateTime.aspx.И поэтому заголовок должен выглядеть так (используйте <%@ Control ... вместо <%@ Page ...):

    <%@ Control 
        Language="C#" 
        Inherits="System.Web.Mvc.ViewUserControl<System.DateTime?>" 
    %>
    <%= Html.TextBox(
        "", 
        (Model.HasValue ? Model.Value.ToString("MM/dd/yyyy") : string.Empty), 
        ViewData
    ) %>
    
3 голосов
/ 27 марта 2013

Вы можете использовать:

@Html.DisplayFor()
2 голосов
/ 17 мая 2012

Украсьте свойство с помощью атрибута [HiddenInput] из пространства имен System.Web.Mvc.

0 голосов
/ 19 января 2017

Я использую для отображения информации только для чтения таким образом:

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

Вам необходимо включить скрытый ввод в дополнение к отображаемому тексту, потому что DisplayFor() не создает элемент управления, который отправляет обратно ;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...