2014-06-23 3 views
0

Мы старательно изучаем Orchard с целью создания не веб-сайтов, а бизнес-ориентированных веб-приложений, которые мы обычно пишем в течение нескольких месяцев с помощью MVC, но надеемся, что они будут намного эффективнее используя уже имеющиеся компоненты.Формы ввода данных Orchard без администратора

Последняя миля, однако, кажется, большой блок - как рассказать Орчард, что он должен создать форму, которая позволяет конечному пользователю редактировать некоторые данные? На большинстве редактирования конечного пользователя есть хороший бит: Creating a module for Orchard that stores data from the front-end, но он поднимается после того, как данные уже введены и переносятся через операцию POST контроллера. Я не могу понять, как пройти начальную операцию GET.

Чтобы разработать, в прямом MVC я могу позволить пользователю вводить информацию о себе. Поэтому у меня есть /Controllers/PersonController.cs и там написана функция Create(). Я бы добавил View в /Views/Person/Create.cshtml и просто «return View()» с контроллера. В Create (Person p), метод HTTPGet, я бы сделал тяжелый подъем, чтобы сохранить объект.

Теперь в саду я получил свою персональную партию и ее PersonPartDriver, которые, как я понимаю из вышеприведенной статьи, я бы написал свой метод POST, чтобы принять PersonPart и сохранить объект.

class PersonController : Controller 
{ 
    private readonly IRepository<PersonPartRecord> personRepository; 

    public PersonController(IRepository<PersonPartRecord> _personRepository) { 
     personRepository = _personRepository; 
    } 

    [HttpPost] 
    public Create(PersonPart part) { 
     personRepository.Create(part.Record); 
    } 
} 

Все хорошо, но как бы я Orchard, чтобы вызвать редактор GET (динамический PersonPart,) метод, чтобы получить форму для пользователя, чтобы сделать первоначальный ввод данных?

protected override DriverResult Editor(PersonPart part, dynamic shapeHelper) 
{ 
    return ContentShape("Parts_Person_Edit", 
         () => shapeHelper.EditorTemplate(
              TemplateName: "Parts/Person", 
              Model: part, 
              Prefix: Prefix)); 
} 

Или я могу написать метод GET Create() в контроллере? Если я это сделаю, я обойду всю систему создания фигуры, нет? Что-то шевельнулось в моей голове, и я предпочел бы делать Display(), а в шаблоне просто сделать его редактируемой формой, но у меня есть Display() для просмотра в режиме «Readonly» Person ... как сделать он знает, что мне нужен редактируемый вид?

Надеюсь, что вопрос имеет смысл и надеется, что кто-то может помочь.

Спасибо.

ответ

0

Посмотрите на Orchard.CustomForms

var model = _contentManager.BuildEditor(contentItem); 
return View(model); 

но вам нужно что-то вроде кода выше. Вы также можете вернуть ShapeResult(this,model)