2sx c Сущность с полем, которое должно быть уникальным - PullRequest
0 голосов
/ 29 января 2020

Пользователь создает сообщение (сущность) и определяет поле UrlKey (тип ввода url-path)

Я хочу предотвратить дублирование значения (если у другой сущности этого типа уже был URL-адрес с таким же содержимым)

Есть ли способ выполнить sh это?


* Отредактировано *

Взгляд на код 2sx c I не нашел простой способ сделать это.

Одна вещь, которую я имею в виду, - это создать ApiController / Endpoint, который я могу вызывать, и выполнить требуемую валидацию, но для этого мне нужно изменить представление из Edit Content (для пользователя: не администратор).

Я нашел сохранение в /dist/ng-edit/main.js, которое минимизировано, там я могу изменить и вызвать мой контроллер / конечную точку, но изменить, чтобы показать некоторые сообщения обратной связи для пользователя и после вызова затрудняют исходную конечную точку с минимизированным файлом.

Есть ли возможность иметь код, который генерирует основной. js? (Может быть, уже там, и я не смог найти)

1 Ответ

1 голос
/ 02 февраля 2020

Мне не известен встроенный (простой) способ выполнения sh этого. Но делать это в представлении с предупреждением - это, вероятно, хороший запасной вариант. Предполагая, что у вас есть View (ListContent), который показывает группу сообщений, вы можете добавить что-то вроде этого, хотя оно ловит его ПОСЛЕ того факта ...

Я только что сделал что-то подобное несколько недель назад go, потому что клиент продолжал повторять заголовки в приложении Blueimp Gallery. Таким образом, вы можете просто вставить это значение в _AlbumList Bootstrap.cshtml в строке 4, создать несколько дубликатов (заголовки, которые будут генерировать дубликаты путей), и вы должны увидеть возможность их исправить ... Итак, после факта, если есть дубликаты и текущий пользователь - Super / Admin / ContentManager, затем сообщите им ситуацию и упростите ее исправление:

<code>@using DotNetNuke.Entities.Portals  @* used by IsAdminOrHost() *@
@using DotNetNuke.Entities.Users    @* used by IsAdminOrHost(), IsContentManager() *@
@{
  if(IsContentManager(Dnn.User)){
    var query = AsDynamic(Data["Default"])
      .GroupBy(x => x.Path)
        .Where(g => g.Count() > 1)
          .Select(y => y.Key)
            .ToList();
    if(query != null) {
<pre>
You have duplicates (@query.Count()), please fix them:
@foreach(var dupe in AsDynamic(Data["Default"])
  .Where(p => query.Any(x => x == p.Path)) ) {
  <span @Edit.TagToolbar(dupe)>-- @dupe.EntityId, @dupe.Path</span>
}
}}} @functions {// текущий пользователь - администратор или хост? publi c bool IsAdminOrHost (UserInfo userInfo) {вернуть userInfo.IsSuperUser || userInfo.IsInRole (PortalSettings.Current.AdministratorRoleName); } // является ли текущий пользователь Контентом или Администратором сайта (или Администратором +)? publi c bool IsContentManager (UserInfo userInfo) {return userInfo.IsInRole ("Контент-менеджеры") || userInfo.IsInRole («Менеджеры сайтов») || IsAdminOrHost (UserInfo); }}

Результаты должны выглядеть примерно так:

enter image description here

...