não-controles de servidor e parcial postbacks
-
12-11-2019 - |
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 :-|
Soluçã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
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.
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);
}