【问题标题】:Orchard data entry forms without admin没有管理员的果园数据输入表格
【发布时间】:2014-06-23 18:21:37
【问题描述】:

我们正在努力学习 Orchard,目标不是创建网站,而是创建以业务为中心的 Web 应用程序,我们通常会在几个月内使用 MVC 编写这些应用程序,但希望通过使用现有的各种部件来提高效率.

不过,最后一英里似乎是一个很大的障碍——如何告诉 Orchard 它应该创建一个允许最终用户编辑某些数据的形状?大多数最终用户在Creating a module for Orchard that stores data from the front-end 上进行编辑有很多好处,但它会在数据已经输入并通过控制器的 POST 操作进行传输后才开始。我想不通的是如何通过初始 GET 操作。

详细地说,在直接的 MVC 中,我可能允许用户输入关于他们自己的信息。所以我有 /Controllers/PersonController.cs 并在那里编写一个 Create() 函数。我会在 /Views/Person/Create.cshtml 中添加一个视图,然后从控制器中简单地“返回 View()”。在 HTTPGet 方法 Create(Person p) 中,我会做繁重的工作来保存对象。

现在在 Orchard 我有我的 PersonPart 和它的 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 Editor(PersonPart, dynamic) 方法来为用户创建表单以进行初始数据输入?

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() 用于 Person 的只读视图……如何制作它知道我想要可编辑的视图吗?

希望这个问题有意义,并希望有人可以提供帮助。

谢谢。

【问题讨论】:

    标签: asp.net-mvc orchardcms orchardcms-1.8 orchard-modules


    【解决方案1】:

    看看Orchard.CustomForms

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

    但您需要类似上面的代码。你也可以返回ShapeResult(this,model)

    【讨论】:

      猜你喜欢
      • 2012-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-01
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      • 2013-09-14
      相关资源
      最近更新 更多