El webpart que estaba construyendo estaba extendiendo las funcionalidades de búsqueda de MOSS y al hacer un submit a la página de resultado me daba el error “This Page has been modified since you opened it. You must open the page again.” o “Se ha modificado esta página desde que la abrió. Debe volver a abrirla.”. Lo curioso es que encima no dejaba ninguna marca en el log de Sharepoint ni de windows, por lo que no sabes exactamente que está pasando.
Al final después de mucho batallar, me fijé que el control estándar que estaba extendiendo llamaba a dos funciones javascript al hacer el submit
… onclick="ResetPageHashCode();WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions( …
Al principio no le dí mucha importancia, pero justo cuando estaba probando con Fidler para comparar lo que enviaba el control estándar con el mío, me di cuenta que borrando el valor del parámetro post “MSO_PageHashCode” dejaba de dar el error. Qué curioso!!!, resulta que mirando el código de la función “ResetPageHashCode” borra este elemento de la página antes de hacer un submit.
Efectivamente añadiendo esta llamada antes de hacer un submit conseguí arreglar mi control, aunque en mi caso tuve que tocarla ya que no me llegaba a funcionar del todo:
function ResetPageHashCode()
{
var f = document.forms[0];
if (null != f && null != f.elements['MSO_PageHashCode'])
f.elements['MSO_PageHashCode'].value = "";
_spFormOnSubmitCalled = false;
}
<asp:Button ID="ASB_BS_SRCH_1" runat="server" Text="Buscar" CssClass="boton" OnClientClick="ResetPageHashCode();Buscar();" />
No puedo asegurar que sea la solución para todos los casos en los que ocurre este error ya que se proponen muchas soluciones, pero en mi caso ha funcionado.
Otras soluciones a este error:
No hay comentarios:
Publicar un comentario