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