Nano Hash - криптовалюты, майнинг, программирование

ASP.NET MVC — как использовать обязательное сообщение внутри EditorTemplates

У меня есть простая модель:

    public abstract class Person
    {
        [Required(ErrorMessage = "Il nome è obbligatorio!!!")]
        [UIHint("txtGeneric")]
        [Display(Name = "Nome")]
        public string Name { get; set; }

        [Required(ErrorMessage = "Il cognome è obbligatorio!!!")]
        [UIHint("txtGeneric")]
        [Display(Name = "Cognome")]
        public string Surname { get; set; }

        [Required(ErrorMessage = "L'email è obbligatoria e deve essere in formato valido ([email protected])!!!")]
        [UIHint("txtEmail")]
        [Display(Name = "E-mail")]
        public string Email { get; set; }
}

Я создал внутри EditorTemplate файл txtGeneric.cshtml. Это так:

@model string
<input name="@ViewData.TemplateInfo.HtmlFieldPrefix" id="@ViewData.TemplateInfo.HtmlFieldPrefix" data-validation="required" data-validation-error-msg="MESSAGE_TO_PUT" value="@Model" />

Я хочу знать, как взять связанный с текстом атрибут Errormessage of Required для помещения в мой файл txtGeneric.cshtml. Как я могу это сделать?

Спасибо


  • Есть два способа установить валидацию. 1. @Html.ValidationSummary() // для полной модели 2. @Html.ValidationMessageFor(/*expression*/) // для выбранного свойства модели. Кажется, вам не хватает помощника проверки. 05.07.2014
  • Да, я знаю помощника проверки и я поставлю его раньше, то, что я хочу, немного отличается... Я хочу получить текстовое значение сообщения для требуемого, которое я установил в модель внутри пользовательского шаблона (для пользовательского цель javascript)... это возможно?!? 05.07.2014
  • Вы можете использовать jquery и получить внутренний текст. проверьте отрендеренный html помощника проверки и получите его внутренний текст. 05.07.2014
  • Мммм, неужели нельзя получить доступ к этому значению прямо в шаблоне редактора?!? Я хочу заполнить свойство самого шаблона 05.07.2014

Ответы:


1

Это работает:

 @{
     string requiredMsg = "";
     foreach (var attr in @Html.GetUnobtrusiveValidationAttributes(@ViewData.TemplateInfo.HtmlFieldPrefix, @ViewData.ModelMetadata))
     {
         if (attr.Key == "data-val-required") {
             requiredMsg = attr.Value.ToString();
         }
     }
 }

или это:

 @{
     string requiredMsg = "";
     IEnumerable<ModelClientValidationRule> clientRules = ModelValidatorProviders.Providers.GetValidators(ViewData.ModelMetadata, ViewContext).SelectMany(v => v.GetClientValidationRules());
     foreach (ModelClientValidationRule rule in clientRules)
     {
         if (rule.ValidationType == "required")
         {
             requiredMsg = rule.ErrorMessage;
         }
     }
 }
11.09.2014

2

Измените свой шаблон на это:

   @model string
   @Html.TextBoxFor(m => m)
   @Html.ValidationMessageFor(model => model, "", new { @class = "text-danger" })
05.07.2014
  • Таким образом, сообщение проверки должно находиться за пределами поля ввода, сгенерированного шаблоном редактора... я хочу получить доступ только к тексту, и я хочу поместить внутрь самого результата ввода 05.07.2014
  • Считайте значение атрибута data-val-required из сгенерированного ввода <input data-val="true" data-val-required="Il nome è obbligatorio!!!" id="Name" name="Name" type="text" value=""> 05.07.2014
  • Нет, извините, но мой английский плохой, и мои объяснения тоже. Я хочу получить текст сообщения внутри EditorTemplates что-то вроде @ViewData.TemplateInfo.HtmlFieldPrefix, но для требуемого сообщения 07.07.2014
  • @pinguinone Если вы используете @Html.EditorFor(m => m), как предложил Мохсен, стандартный шаблон редактора будет использовать аннотации данных для создания соответствующих атрибутов data-val. Другими словами, вам не нужно ничего делать, если только вы не собираетесь предоставлять пользовательские аннотации данных. Но это совершенно отдельная проблема. 12.09.2014
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..