Pergunta

Estou inserindo alguns não-controles de servidor (html simples controles) dinamicamente em uma atualização do painel usando jQuery.

Se eu fizer um postback completo, eu posso obter os valores dos controles usando Pedido.Formulário, no entanto, se eu fazer um parcial de postback, eu não posso.

Eu deveria ser capaz de obter os valores dos controles html, durante um parcial de reposição?Ou apenas controles com runat="server"?

Eu estou usando o servidor não controla como eu estou a brincar com câmeras e controles carregamento de arquivo...não é bonito :-|

Foi útil?

Solução

O painel de atualização

não é uma maneira eficiente de fazer assíncrono.

Como você já está usando jQuery, adicione um serviço da web (.asmx) a você projetar e acertar isso.Veja a Figura 4 do presente artigo: http://msdn.microsoft.com/pt-Us / revista / cc163413.aspx

Solicitar.Form é construído a partir do ViewState, que seus controles não terão sido adicionados.

Outras dicas

Você pode obter todos os valores de qualquer forma de controle ou controles que você deseja em um Postback Parciais.É uma resposta trivial, mas não é intuitivamente óbvio à primeira vista.Talvez por isso ASP.net está morto.

Lembre-se de que os parâmetros de

__doPostback(string controlId,string param)

são cadeias de caracteres, e o ASP.net métodos

Request.Params.Get("__EVENTTARGET"); // id
Request.Params.Get("__EVENTTARGET"); // parameter

retornar seqüências de caracteres.

Portanto, a resposta é simples, para

  1. Construir um objeto javascript com pares de valores de chave de todos os seus os elementos de formulário que você deseja enviar de volta em sua parcial.

  2. Stringify que objeto, e passá-lo como o segundo parâmetro do seu __doPostBack chamada.

No lado do servidor, você simplesmente reverter esse processo para extrair o seu objeto e de todos os valores de forma que você se preocupa.

Por exemplo :

var strigifiedObject = JSON.stringify(myFormObject);
var id = "partialPostback";
__doPostBack(id, strigifiedObject);

...enquanto isso no lado do servidor

string id = Request.Params.Get("__EVENTTARGET");
string param = Request.Params.Get("__EVENTARGUMENT");

if (id == "partialPostback") {
    List<MyObj> formVals = new JavaScriptSerializer().Deserialize<List<MyObj>>>(param);
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top