0

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

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

textinput标签在其中查找name字段requestObject,然后将值放入文本输入字段。我的 Liquidese 相当生疏,所以如果我把这一切都弄错了,我会连贯地尖叫着说我是个傻瓜,我需要做些什么才能变得更好。

4

1 回答 1

1

这很容易在标签渲染器中使用Context's完成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>");
        }
    }
}

在运行传递给它的操作之前,Stack推送一个新的 Hash 变量堆栈(查找链中未设置的变量),然后在最后弹出它。非常适合变量的本地化范围。

于 2017-12-27T17:55:48.617 回答