Я использую 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: Я думал об отправке всей мета-информации каждой модели во внешний интерфейс через контроллер при загрузке первой страницы или при запуске.
Есть предложения лучше?