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

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

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

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

1 ответ

Чтобы получить количество записей хранимых представлений, введите или разрешите 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, Основная причина этого становится ясной, когда вы начинаете переопределять свой шаблон формы или начинаете предоставлять альтернативы формы, в обоих случаях у вас будет дублирующаяся логика во всех ваших шаблонах формы, что, конечно, не очень СУХОЙ. И есть более философская проблема разделения интересов: вам не нужен код доступа к данным в ваших представлениях. Скорее используйте этот код от контроллера, драйвера или поставщика таблицы форм.

Другие вопросы по тегам