跟进我最初的问题:
如果我这样在代码中创建一个表单:
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);
}
并因此将其注入前端视图(如提供的答案):
var shape = _formManager.Build("MyLayoutBasicInformation");
我的显示器只显示字段名。但是没有将其保存到数据库的按钮。关于如何做到这一点的任何想法?
更新:我正在使用我自己的自定义模块。我确实应用了一个自定义主题。ShapeTracing 给了我替代品来放置在主题中——我不知道我想这样做。
我因此将构建代码放在我的控制器中:
[Themed]
public ActionResult BasicInformation()
{
var basicInformation = _formManager.Build("MyLayoutBasicInformation");
return new ShapeResult(this, basicInformation);
}
最初,我使用 HTML 帮助程序对字段进行硬编码。因此,如果我的控制器是 MyController,我会看到这样的视图:~/Views/My/BasicInformation.cshtml。该文件仍然存在于模块中,但现在被构建代码覆盖。
我怀疑我必须玩弄它。
更新:我设法在函数中执行此操作以显示按钮,只需要弄清楚如何连接它。
_NextButton: Shape.Button(
Id: "NextButton", Name: "Next",
Title: T("Next")
)
但这只是显示一个没有文本的按钮。