powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Вывод описание поля (Display/Description) модели в представлении
25 сообщений из 26, страница 1 из 2
Вывод описание поля (Display/Description) модели в представлении
    #38243999
Sergey N. Korobeynikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую!

Описываем модель формы, выставляем запрос поля, имя поля и его описание в модели.
Код: c#
1.
2.
3.
        [Required]
        [Display(Name = "Имя пользователя", Description="Пример: user@example.com")]
        public string UserName { get; set; }



Кто подскажет, как в представлении выдрать этот самый Required (чтобы задать класс required или нарисовать звезду), ну и описание поля Display/Description.
...
Рейтинг: 0 / 0
Вывод описание поля (Display/Description) модели в представлении
    #38244010
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может просто?

Код: c#
1.
[Required(ErrorMessage = "*")]
...
Рейтинг: 0 / 0
Вывод описание поля (Display/Description) модели в представлении
    #38244071
evgen12345
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey N. KorobeynikovПриветствую!

Описываем модель формы, выставляем запрос поля, имя поля и его описание в модели.
Код: c#
1.
2.
3.
        [Required]
        [Display(Name = "Имя пользователя", Description="Пример: user@example.com")]
        public string UserName { get; set; }



Кто подскажет, как в представлении выдрать этот самый Required (чтобы задать класс required или нарисовать звезду), ну и описание поля Display/Description.

Для такого свойства сгенерится html

Код: html
1.
<input class="text-box single-line input-validation-error" data-val="true" data-val-required="Требуется поле UserName" id="UserName" name="UserName" type="text" value="">



так вот можно с помощтю JS найти эти input и что то с ними сделать - но это костыль

более достойный путь :) это реализовать свой хелпер типа
Код: c#
1.
@Html.MyDisplayFor



примеры в сети есть.
...
Рейтинг: 0 / 0
Вывод описание поля (Display/Description) модели в представлении
    #38244077
evgen12345
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
evgen12345,

найти по атрибуту - data-val-required
...
Рейтинг: 0 / 0
Вывод описание поля (Display/Description) модели в представлении
    #38244084
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не понял, о каких звездочках речь. Маска что-ли?
...
Рейтинг: 0 / 0
Вывод описание поля (Display/Description) модели в представлении
    #38244085
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey N. Korobeynikov,

Чтобы узнать метадата, обратись к @ViewData.ModelMetadata.Properties.Where(x => x.PropertyName == "Имя твоего проперти")

А там смотри по картинке... (IsRequired)
...
Рейтинг: 0 / 0
Вывод описание поля (Display/Description) модели в представлении
    #38244087
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

Ну ты даешь! )))) звездочку сто лет назад стали рисовать рядом с полями обязательными для заполнения. Вот человеку и хочецца рисовать её там где надо. Маска )))гггг
...
Рейтинг: 0 / 0
Вывод описание поля (Display/Description) модели в представлении
    #38244106
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУ, Ну ты даешь! )))) звездочку сто лет назад стали рисовать рядом с полями обязательными для заполнения. Вот человеку и хочецца рисовать её там где надо. Маска )))гггг
Так а я что написал?

Код: c#
1.
[Required(ErrorMessage = "*")]



А дальше @Html.ValidationMessageFor()

Какие нафиг ModelMetadata, ты о чем?
...
Рейтинг: 0 / 0
Вывод описание поля (Display/Description) модели в представлении
    #38244110
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

Звездочка нужна до валидации , а не после. Она как бы заранее предупреждает, это надо заполнить, а не появляться волшебным образом, после нажатия "Отправить" ))
...
Рейтинг: 0 / 0
Вывод описание поля (Display/Description) модели в представлении
    #38244120
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt, ну тогда свой хелпер

ViewData.ModelMetadata.Properties.Where(pm => pm.ShowForEdit && !ViewData.TemplateInfo) + !HideSurroundingHtml + PropertyName + IsRequired
...
Рейтинг: 0 / 0
Вывод описание поля (Display/Description) модели в представлении
    #38244170
Sergey N. Korobeynikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,
@ViewData.ModelMetadata.Properties.Where(x => x.PropertyName == "Имя твоего проперти")

Близко, но это я так понимаю обращение к свойству модели, а не элемента модели. И, на мой взгляд, какое-то оно громоздкое с условием поиска.

Что-то в духе elementName.property.description не имеется?

P.S. про Required нужно понять что такого можно сделать CSS, чтобы показать, что поле обязательное. И вопрос можно считать закрытым.
...
Рейтинг: 0 / 0
Вывод описание поля (Display/Description) модели в представлении
    #38244183
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey N. Korobeynikov,

Для MVC это логичный подход. Собственно для этих целей ModelMetadata и создана.

Но если не хочется, можешь написать свой хелпер, вот основа:

Код: c#
1.
2.
var type = typeof(YourViewModel);
var required = type.GetField("Твоё проперти").GetCustomAttribute<RequiredAttribute>();



разницы нет... объёма будет даже больше по коду. так что.
...
Рейтинг: 0 / 0
Вывод описание поля (Display/Description) модели в представлении
    #38244196
Sergey N. Korobeynikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,
судя по всему на примере идёт обращение к модели целиком, а не к конкретному элементу.

Можете конкретику привести, какой код если мне нужно получить Description элемента UserName?
...
Рейтинг: 0 / 0
Вывод описание поля (Display/Description) модели в представлении
    #38244211
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey N. Korobeynikov,

Код: c#
1.
@ViewData.ModelMetadata.Properties.Where(x => x.PropertyName == "UserName").DisplayName



Можешь оформить в хелпер, если очень нужно.

Вот для примера кастомный редактор модели для Bootstrap

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
@functions
{
    bool ShouldShow(ModelMetadata metadata)
    {
        return metadata.ShowForEdit
            // && metadata.ModelType != typeof(System.Data.EntityState)
            && !metadata.IsComplexType
            && !ViewData.TemplateInfo.Visited(metadata);
    }
}

@if (ViewData.TemplateInfo.TemplateDepth > 1)
{
    @(Model == null ? ViewData.ModelMetadata.NullDisplayText : ViewData.ModelMetadata.SimpleDisplayText)
}
else
{
    // ViewData.Clear();
    foreach (var prop in ViewData.ModelMetadata.Properties.Where(ShouldShow))
    {
        if (prop.HideSurroundingHtml)
        {
        @Html.Editor(prop.PropertyName)
        }
        else
        {
        <div class="control-group">
            @if (prop.ModelType == typeof(bool))
            {
                <div class="controls">
                    <label class="checkbox">
                        @Html.Editor(prop.PropertyName) @Html.ValidationMessage(prop.PropertyName)
                        @prop.DisplayName
                    </label>
                </div>
            }
            else
            {
                @Html.Label(prop.PropertyName, new { @class = "control-label" })
                <div class="controls">
                    @Html.Editor(prop.PropertyName) @Html.ValidationMessage(prop.PropertyName)
                </div>
            }
        </div>
        }
    }
}




Добавляешь его в виде файла Form.cshtml в папку Views\Shared\EditorTemplates

пользоваться можно примерно так:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
@model MyVieModel

@using(Html.BeginForm()) {

...

<div class="form-horizontal">

@Html.EditorForModel("Form")

</div>

...

}
...
Рейтинг: 0 / 0
Вывод описание поля (Display/Description) модели в представлении
    #38244218
Sergey N. Korobeynikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

@ViewData.ModelMetadata.Properties.Where(x => x.PropertyName == "UserName").DisplayName

Нерабочий код.
Я дотошно пытаюсь понять как данную задачу решить максимально просто.
...
Рейтинг: 0 / 0
Вывод описание поля (Display/Description) модели в представлении
    #38244235
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey N. Korobeynikov,

.. вот по этому запросу

ASP.NET MVC–How to show asterisk after required field label

в гугле вываливается изрядное количество примеров с кодом ...
...
Рейтинг: 0 / 0
Вывод описание поля (Display/Description) модели в представлении
    #38244241
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey N. Korobeynikov,

ну что за человек..


@ViewData.ModelMetadata.Properties. Single (x => x.PropertyName == "UserName")

Проще -- некуда. В метадате положили все на блюдечке. Просто возьми.
...
Рейтинг: 0 / 0
Вывод описание поля (Display/Description) модели в представлении
    #38244264
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey N. Korobeynikov,

.. а вот это джава-скрипт таки работает (я проверил)

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<script type="text/javascript">
    $('input[type=text]').each(function () {
        var req = $(this).attr('data-val-required');
        if (undefined != req) {
            var label = $('label[for="' + $(this).attr('id') + '"]');
            var text = label.text();
            if (text.length > 0) {
                label.append('<span style="color:red"> *</span>');
            }
        }
    });
    </script>
...
Рейтинг: 0 / 0
Вывод описание поля (Display/Description) модели в представлении
    #38244385
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
carrotikSergey N. Korobeynikov, .. а вот это джава-скрипт таки работает (я проверил)
Все-таки, лучше через нормальный серверный рендеринг через хелпер.
...
Рейтинг: 0 / 0
Вывод описание поля (Display/Description) модели в представлении
    #38244392
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

...я в курсе, что это "нечистая работа", но автор упомянул "наиболее простой метод" ...
...
Рейтинг: 0 / 0
Вывод описание поля (Display/Description) модели в представлении
    #38244436
Sergey N. Korobeynikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt, вы сами попробуйте сделать, потом напишите. Оно не работает.
...
Рейтинг: 0 / 0
Вывод описание поля (Display/Description) модели в представлении
    #38244465
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey N. Korobeynikov,

@ViewData.ModelMetadata.Properties.Single(x => x.PropertyName == "UserName") ← ставим точку, дожидаемся что покажет IntelliSense

если интеллисенс не работает, да ещи и гугл наглухо заблокирован, то я глубо скорблю по этому поводу, похоже помочь действительно ничем не могу.
...
Рейтинг: 0 / 0
Вывод описание поля (Display/Description) модели в представлении
    #38244470
Sergey N. Korobeynikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt, что-то мне подсказывает, что работать нужно вот с этим элементом:
Код: plaintext
1.
@Html.DisplayFor(m => m.UserName, additionalViewData: new { })
...
Рейтинг: 0 / 0
Вывод описание поля (Display/Description) модели в представлении
    #38244495
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey N. Korobeynikov,

можно, передай вторым параметром название нужного шаблона, а в шаблоне уже можешь обращаться вот так:

@ViewData.ModelMetadata.DisplayName или .IsRequired или ещё что-то

шаблон размести в папке Views\Shared\DisplayTemplates\

в общем, вариантов не очень мало, делай как удобней
...
Рейтинг: 0 / 0
Вывод описание поля (Display/Description) модели в представлении
    #38245662
Sergey N. Korobeynikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt, в общем, рабочий код следующий:
Код: c#
1.
string username_desc = ModelMetadata.FromLambdaExpression<partpost.Models.LogOnModel, string>(m => m.UserName, ViewData).Description;


Код: html
1.
<div class="description">@username_desc</div>



С Html.DisplayFor пока не разобрался как он работает и для чего нужен.
...
Рейтинг: 0 / 0
25 сообщений из 26, страница 1 из 2
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Вывод описание поля (Display/Description) модели в представлении
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]