Мне не известен встроенный (простой) способ выполнения 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); }}
Результаты должны выглядеть примерно так: