我希望能够在子标记内访问传递给DotLiquid中的表单标记的对象。像这样:
{% form '/action' requestObject %}
{% textinput Name %}
<button type="submit">Create Request</button>
{% endform %}
textinput
标记在name
上查找requestObject
字段,然后将值放入文本输入字段。我的liquidese是一个相当生疏的,所以如果我发现这一切都是错的,我会开始连贯地尖叫着我是什么样的傻瓜以及我需要做些什么才能做得更好。
答案 0 :(得分:1)
使用Context
的{{1}}标记渲染器可以轻松完成此操作:
Stack
在运行传递给它的动作之前,public class Form : Block
{
// public override void Initialize...
public override void Render(Context context, TextWriter writer)
{
context.Stack(() =>
{
context["form_obj"] = new FormObject();
result.Write("<form>");
base.Render(context, result);
result.Write("</form>");
}
}
}
推送一个新的Hash变量堆栈(查找未设置变量的链),然后在最后弹出它。适用于局部变量范围。