Generieren von dynamischem XML in Razor

Ich verwende Razor außerhalb von ASP.NET, um XML-Dokumente aus einer Vorlage zu generieren. Ich habe folgenden Code:

<event>
    <timeouts trigger='@Model.TriggerTimeout' />
    <parameters>
    @foreach (var parameter in Model.Parameters) {
        <@parameter.Key>@parameter.Value</@parameter.Key>
    }
    </parameters>
</event>

Dabei ist Model.Parameters nur eine Name / Wert-Auflistung. Meine erwartete Ausgabe sollte sein:

<event>
    <timeouts trigger='100' />
    <parameters>
        <name1>value1</name1>
        <name2>value2</name2>
        <name3>value3</name3>
    </parameters>
</event>

aber was ich eigentlich bekomme ist:

<event>
    <timeouts trigger='100' />
    <parameters>
        <name1>value1</@parameter.Key>
        <name2>value2</@parameter.Key>
        <name3>value3</@parameter.Key>
    </parameters>
</event>

Was mache ich falsch? Was ist die geheime Sauce, die ich anwenden muss, um die dynamischen Elemente richtig zu schließen?

BEARBEITEN Mein Modell hat nun mehrere Ereignisse und mein Razor-Code sieht folgendermaßen aus:

<events>
@foreach (var _event in Model.Events) {
    <@_event.Name enabled='@_event.Enabled'>
        <timeouts trigger='@_event.TriggerTimeout' />
        <parameters>
        @foreach (var parameter in _event.Parameters) {
            @:<@parameter.Key>@parameter.Value</@(parameter.Key)>
        }
        </parameters>
    </@_event.Name>
}
</events>

Die Ausgabe sollte sein:

<events>
    <event1 enabled='true'>
        <timeouts trigger='100' />
        <parameters>
            <name1>value1</name1>
            <name2>value2</name2>
        </parameters>
    </event1>
    <event2 enabled='false'>
        <timeouts trigger='100' />
        <parameters>
            <name1>value1</name1>
        </parameters>
    </event2>
</events>

aber es ist tatsächlich:

<events>
    <event1 enabled='true'>
        <timeouts trigger='100' />
        <parameters>
            <name1>value1</name1>
            <name2>value2</name2>
        </parameters>
    </@_event.Name>
    <event2 enabled='false'>
        <timeouts trigger='100' />
        <parameters>
            <name1>value1</name1>
        </parameters>
    </@_event.Name>
</events>

LÖSUNG Durch einMenge Von Versuch und Irrtum aus habe ich schließlich die fehlende geheime Soße aufgespürt. Das öffnende dynamische XML-Element benötigte a?: Präfix, um das schließende Element korrekt zu rendern. Am seltsamsten.

<events>
@foreach (var _event in Model.Events) {
    @:<@_event.Name enabled='@_event.Enabled'>
        <timeouts trigger='@_event.TriggerTimeout' />
        <parameters>
        @foreach (var parameter in _event.Parameters) {
            @:<@parameter.Key>@parameter.Value</@(parameter.Key)>
        }
        </parameters>
    </@_event.Name>
}
</events>

Antworten auf die Frage(1)

Ihre Antwort auf die Frage