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

Проверка аннотаций данных MVC4 на основе различных ролей пользователей с использованием poco инфраструктуры сущностей

Я разрабатываю сложное приложение с примерно 90 различными формами (да, круто). Как мне выполнить сложную проверку поля на основе нескольких требований:

1) требования к полям основаны на том, какой пользователь вошел в систему (роль) 2) требования к полям изменяются, если другие поля данных заполнены по-разному (динамически)

как это достигается в MVC4 с использованием EF5 POCO?

В настоящее время я создал аннотации данных для обязательных полей, например:

Моя модель EF5 POCO:

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;

[MetadataType(typeof(User_Validation))]
public partial class User
{    
    public int UserID { get; set; }
    public string UserName { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Password { get; set; }
    public string Email { get; set; }
}

Файл ValidationModels.cs, расположенный вместе с моими POCO EF5:

    public class User_Validation
    {    
        public int UserID { get; set; }

        [Required(ErrorMessage = "The UserName is required")]
        public string UserName { get; set; }

        [Required(ErrorMessage = "The FirstName is required")]
        public string FirstName { get; set; }

        [Required(ErrorMessage = "The LastName is required")]
        [Display(Name="Last Name")]
        public string LastName { get; set; }

        [Required(ErrorMessage = "The Password is required")]
        [DataType(DataType.Password)]
        public string Password { get; set; }

        [Required(ErrorMessage = "The Email is required")]
        [DataType(DataType.EmailAddress)]
        public string Email { get; set; }
    }

Это работает отлично и денди, но как мне сделать мои проверки динамическими??

Спасибо!


Ответы:


1

Вам нужно, чтобы администратор установил динамические требования к ответам, или они будут довольно статичными с самого начала?

Если бы я был вами, я бы создал разные методы действий для каждого триггерного ответа. Это позволит вам указать формы как частичные представления и отображать их на основе логики ввода.

Если вам нужна проверка настраиваемых полей, рекомендуется написать собственную структуру проверки данных. Вы можете наследоваться от ActionFilterAttribute, который позволяет добавлять пользовательскую проверку до и после каждого цикла запроса/ответа действия. Посмотрите здесь некоторую информацию Пользовательские фильтры в MVC

Кроме того, я бы представил пользовательскую структуру проверки jquery для проверки на стороне клиента, чтобы не было нескольких обратных передач для одной и той же формы, а затем выполнял бы пользовательскую проверку на стороне сервера перед динамическим созданием следующей формы. Информацию о структуре см. в этом блоге: Jquery - Пользовательская проверка

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

Надеюсь, это поможет.

14.01.2013
  • Да, администратор может изменить их для каждой роли. Я нашел это: foolproof.codeplex.com У меня такое чувство, что это делает то, что я хочу. Мне нужно немного изучить его. 14.01.2013
  • Новые материалы

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

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

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

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

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

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

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