跟进 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/