Mostrando entradas con la etiqueta RAZOR. Mostrar todas las entradas
Mostrando entradas con la etiqueta RAZOR. Mostrar todas las entradas

jueves, 19 de abril de 2018

Dos Helpers Razor para postear diccionarios en forms y Json

Descripción

El modelo de una página Razor incluye propiedades del tipo diccionario que queremos postear como campos ocultos o mediante Json.

Solución

Para camposOcultos

@helper OcultoDictionary(Dictionary<int, int> dicc, string nombre)
    {
        var i = 0;
        foreach (var d in dicc)
        {
            <input type="hidden" value="@d.Key" name="@string.Format("{0}[{1}].Key",nombre,i)" />
            <input type="hidden" value="@d.Value" name="@string.Format("{0}[{1}].Value",nombre,i)" />
            i++;
        }
}

Ejemplo de resultados

<input type="hidden" value="1" name="ExperienciasEspecificas[0].Key" />
<input type="hidden" value="1" name="ExperienciasEspecificas[0].Value" />
<input type="hidden" value="2" name="ExperienciasEspecificas[1].Key" />
<input type="hidden" value="1" name="ExperienciasEspecificas[1].Value" />
<input type="hidden" value="3" name="ExperienciasEspecificas[2].Key" />
<input type="hidden" value="1" name="ExperienciasEspecificas[2].Value" />

Para Json

@helper JsonDiccionario(Dictionary<int, int> dic, string n)
    {
        var i = 0;
        foreach (var d in dic)
        {
            @Html.Raw($"'{n}[{i}].Key':{d.Key},")
            @Html.Raw($"'{n}[{i}].Value':{d.Value},")
            i++;
        }
}

Ejemplo de resultados

{
...
'ExperienciasEspecificas[0].Key':1,
'ExperienciasEspecificas[0].Value':1,
'ExperienciasEspecificas[1].Key':2,
'ExperienciasEspecificas[1].Value':1,
'ExperienciasEspecificas[2].Key':3,
'ExperienciasEspecificas[2].Value':1,
...
}