Как передать атрибуты модели и / или аннотацию данных в vue.js - PullRequest
0 голосов
/ 25 октября 2019

Я использую DotNet, Entity Framework и Vue.js.

Недостающая часть головоломки: я хочу, чтобы мои Vue.js могли читать / знать атрибуты, которые я применил к / в моих моделях.

Предположим, у меня есть такие модели, как:

public class Entry
  {
    [Hidden]
    public int id { get; set; }
  }

public class Patient: Entry
  {
    [RamqFormat]
    public string ramq { get; set; }
    [NameFormat]
    public string name { get; set; }
    [PhoneFormat]
    public string phone { get; set; }
    [EnumAtt("fr,en,sp")]
    public Lang preferedLang { get; set; }
  }

public class Question: Entry
  {
    [InstructionFormat]
    public string instruction { get; set; }
    [QuestionLabelFormat]
    public string label { get; set; }
    [ResponseFormat]
    public Response response { get; set; }
    [BoolFormat]
    public bool isOptional { get; set; }
  }

Затем я использую универсальный контроллер CRUD, который устанавливает связь с CRUD.vue, который сам по себе выглядит так:

<template src="./Crud.html"/>

<script>
import ctrl from "./CrudCtrl";

export default {
  name: 'crud',
  data () {
      return {
      model: ''
      }
  },

  ... CRUD implementation ...

Все работает просто отлично, включая универсальный контроллер CRUD.

Теперь недостающий кусок головоломки таков: я бы хотел, чтобы мои Vue.js могли читать / знать атрибуты, к которым я применил/ в моих моделях.

Например;При отображении поля / свойства из моих моделей с помощью [PhoneFormat], Vue.js должен быть в состоянии определить, что он должен отображать мое поле / свойство в качестве поля ввода, правильно информирующего данный формат телефона.

Илиесли он имеет атрибуты [EnumAtt ("fr, en, sp")], он должен отображаться в виде выпадающего списка с параметрами ["fr", "en", "sp"]

или если он имеет атрибуты[BoolFormat] он должен отображаться как флажок.

Или, если он имеет атрибуты [Скрыто], он не должен отображаться.

Я бы предпочел не делать этогопродублируйте мои модели в серии component.vue или model.js.

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

2: Я думал об отправке всей мета-информации каждой модели во внешний интерфейс через контроллер при загрузке первой страницы или при запуске.

Есть предложения лучше?

...