DotLiquid中的子标签上下文(带表格)

问题描述 投票:0回答:1

我希望能够在子标签中访问传递给DotLiquid中的表单标签的对象。像这样的东西:

{% form '/action' requestObject %}
    {% textinput Name %}
    <button type="submit">Create Request</button>
{% endform %}

textinput标签在name上查找requestObject字段,然后将值放入文本输入字段。我的liquidese是一个相当生疏的,所以如果我发现这一切都错了,我会开始连贯地尖叫着我是什么样的傻瓜以及我需要做些什么才能做得更好。

c# .net-core liquid dotliquid
1个回答
1
投票

这可以通过ContextStack在标签渲染器中轻松完成:

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>");
        }
    }
}

在运行传递给它的动作之前,Stack推送一个新的Hash变量堆栈(查找未设置变量的链),然后在最后弹出它。适用于局部变量范围。

© www.soinside.com 2019 - 2024. All rights reserved.