c# - 如何使用 Orchard.Forms 插入保存按钮?

标签 c# asp.net-mvc orchardcms

跟进 my initial question :

如果我这样在代码中创建一个表单:

public void Describe(DescribeContext context) {
    Func<IShapeFactory, object> form =
        shape => {

            var f = Shape.Form(
                Id: "MyLayoutBasicInformation",
                _BasicInformation: Shape.Fieldset(
                    Title: T("Basic Information"),

                    _FirstName: Shape.TextBox(
                        Id: "FirstName", Name: "First Name",
                        Title: T("First Name"),
                        Description: T("The name for this field")
                        )
                    )
                );
            return f;
        };
    context.Form("MyLayoutBasicInformation", form);
}

并将其注入(inject)到前端 View 中(如提供的答案):

var shape = _formManager.Build("MyLayoutBasicInformation");

我的显示器只显示 First Name 字段。但是没有将其保存到数据库的按钮。关于如何实现这一点有什么想法吗?

更新:我正在使用我自己的自定义模块。我确实应用了一个自定义主题。 ShapeTracing 为我提供了替代方案以放置在主题中 - 我不知道我想要这样做。

我这样将构建代码放入我的 Controller 中:

[Themed]
    public ActionResult BasicInformation()
    {
        var basicInformation = _formManager.Build("MyLayoutBasicInformation");
        return new ShapeResult(this, basicInformation);
    }

最初,我使用 HTML 帮助程序对字段进行硬编码。因此,如果我的 Controller 是 MyController,我会看到这样的 View :~/Views/My/BasicInformation.cshtml。该文件仍然存在于模块中,但现在已被构建代码覆盖。

我怀疑我必须玩弄它。

更新:我设法在函数中执行此操作以显示按钮,只需要弄清楚如何连接它即可。

_NextButton: Shape.Button(
Id: "NextButton", Name: "Next",
Title: T("Next")
    )

但这只是显示一个没有文本的按钮。

最佳答案

默认情况下,不会为以这种方式构建的任何表单生成提交按钮。将提交按钮添加到您的表单更改您的代码如下:

public void Describe(DescribeContext context) {
    Func<IShapeFactory, object> form =
        shape => {

            var f = Shape.Form(
                Id: "MyLayoutBasicInformation",
                _BasicInformation: Shape.Fieldset(
                    Title: T("Basic Information"),

                    _FirstName: Shape.TextBox(
                        Id: "FirstName", Name: "First Name",
                        Title: T("First Name"),
                        Description: T("The name for this field")
                        )
                    ),
                    _Submit:Shape.Submit(Value:"Save") 
                );
            return f;
        };
    context.Form("MyLayoutBasicInformation", form);
}

关于c# - 如何使用 Orchard.Forms 插入保存按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17372182/

相关文章:

orchardcms - Orchard - 如何在分类字段中显示自定义术语字段?

c# - WPF MVVM 绑定(bind)问题/疑问

c# - 当 TabControl 绑定(bind)到 ViewModels 时 WPF 变慢

c# - 在 wpf Canvas 控件中添加时如何获取动态设计的用户控件的高度和宽度?

c# - 拖放在 Windows 10 Mobile 上的 UWP 应用程序中不起作用

asp.net-mvc - ASP.NET MVC : Redirecting to an Action on a different application

asp.net-mvc - 如何在 MVC 选择路由之前添加路由参数

c# - 尝试将类型注册到 IoC 容器时,HttpContext.Current 为空

orchardcms - 从不同部分获取 Orchard 字段

c# - Orchard 项目模块出现错误 : No persister for: SomePartRecord