Pergunta

Esta questão está relacionada ao isto.

Estou usando o seguinte para extrair os atributos e valores dos elementos selecionados na minha página:

var valuesArray = $("select").map(function()
{
    return $.getAttributes($(this).find(":selected"));
});

var arr = new Array();
$.each(valuesArray, function()
{
    arr.push($(this)[0]); // this filters out things like 'length'
});

Basicamente, depois de receber uma matriz dos objetos representando os atributos das minhas caixas selecionadas, quero convertê -lo em uma sequência de dados que eu possa passar para o servidor

// get data string for server
var data = $.toJSON(arr); 

O JSON retornou é:

[{"siteId":"2"},{"filterId":"2","factSheetPanelId":"2"}]

E eu passo para o servidor assim:

$.get(url, data, function(result)
{
    // do stuff
}, "html");

O código no servidor é, mas não está captando os valores e a ligação do modelo está falhando

public PartialViewResult PanelList(FactsheetPanel panel, Site site)
{
    // panel.FactsheetPanelId == 0. I would expect it to be 2
    // same for site.SiteId..
}

Alguém pode ver qualquer coisa obviamente errada com isso?

Foi útil?

Solução

Não passe JSON. O jQuery simplesmente passará isso para o servidor, que não saberá o que fazer com ele, a menos que você escreva um fichário de dados JSON.

Em vez disso, passe um objeto JavaScript. O jQuery serializará serializando isso nos parâmetros de sequência de consultas, que funcionam corretamente. Por exemplo:

var data = {
               panel: { filterId: "2", factSheetPanelId: "2" },
               site: { siteId: "2" }
           };

Outras dicas

Isso parece errado. Teria ajudado se você também postou seu FactsheetPanel e Site Aulas, mas de qualquer maneira, até onde eu entendo, eis como o seu JSON deve ser depois de obter os valores dos seus elementos HTML e processá -los.

{"site.siteId":"2", "panel.filterId":"2","panel.factSheetPanelId":"2"}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top