2017-02-21 19 views
0

Я сделал страницу регистрации с динамической формой в Orchard CMS и получил новые требования к проверке количества записей.Как получить динамический отчет о регистрации формы в Orchard CMS

Я понятия не имею, как это сделать, я просмотрел SubmissionAdminController.cs в папке Orchard.DynamicForms.Controllers, но все еще не смог найти способ.

Я думаю, чтобы получить учетную запись с моей страницы cshtml и проверить ее в разных частях, возможно ли это?

ответ

0

Чтобы получить счетчик записанных записей, введите или разрешите IRepository<Submission> и используйте метод Count(), чтобы подсчитать все предметы. Обратите внимание, что метод Count() принимает выражение, которое позволяет фильтровать, например, имя формы. Для справки, это то, что Submission класс выглядит следующим образом:

namespace Orchard.DynamicForms.Models { 
    public class Submission { 
     public virtual int Id { get; set; } 
     public virtual string FormName { get; set; } 

     [StringLengthMax] 
     public virtual string FormData { get; set; } 
     public virtual DateTime CreatedUtc { get; set; } 
    } 
} 

Если у вас есть IRepository<Submission>, это то, как вы бы перечесть все представленные в форме, называемой «MyForm»:

var count = submissionRepository.Count(x => x.FormName == "MyForm"); 

Если вы не имеет контроллера или настраиваемую часть или что-нибудь, чтобы придать эту IRepository в, то вы могли бы решить хранилище непосредственно формируют ваш взгляд, как это:

@{ 
    var submissionRepository = WorkContext.Resolve<IRepository<Submission>>(); 
    var submissionCount = submissionRepository.Count(x => x.FormName == "MyForm"); 
} 

Убедитесь, импортировать соответствующие пространства имен:

  • Orchard.DynamicForms.Models для Submission
  • Orchard.Data для IRepository<T>

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

+0

Большое спасибо Спайку, вы спасли мой день! –

+0

Вам следует предоставить ответ;) –

+0

Мне жаль, что я нажал кнопку полезной кнопки, но без достаточной репутации. –