Pregunta

Tengo un control personalizado que tiene una WebResource en ella.

El WebResource es un archivo javascript y tengo la opción de compilación en el archivo javascript establecido en "Recurso incrustado" y tengo las siguientes líneas de código en mis AssemblyInfo.cs para el proyecto de mi control personalizado está en:

// Export the MultiSelectGridView.js file
[assembly: WebResource("SOM.DCO.CustomWebControls.MultiSelectGridView.js", "application/x-javascript")]

En mi control personalizado, tengo las siguientes líneas en el proceso de carga overriden:

private const string MULTISELECTGRIDVIEW_JS = "SOM.DCO.CustomWebControls.MultiSelectGridView.js";
Type t = this.GetType();
                string url = Page.ClientScript.GetWebResourceUrl(t, MULTISELECTGRIDVIEW_JS);
                if (!Page.ClientScript.IsClientScriptIncludeRegistered(t, MULTISELECTGRIDVIEW_JS))
                    Page.ClientScript.RegisterClientScriptInclude(t, MULTISELECTGRIDVIEW_JS, url);

También he intentado lo siguiente:

private const string MULTISELECTGRIDVIEW_JS = "SOM.DCO.CustomWebControls.MultiSelectGridView.js";
if (!Page.ClientScript.IsClientScriptIncludeRegistered(t, MULTISELECTGRIDVIEW_JS))
                    Page.ClientScript.RegisterClientScriptResource(t, MULTISELECTGRIDVIEW_JS);

Por desgracia, no importa lo que haga, la WebResource que regrese está en blanco, por lo que ninguna de las funciones en mi archivo javascript están incluidos / definida en mi página de consumo.

Me estoy perdiendo algo obvio?

¿Fue útil?

Solución 3

Pues resulta que a pesar de que mi javascript estaba en los SOM.DCO.CustomWebControls "nombre", que estaba dentro de una carpeta llamada "MultiSelectGridView". Así que cambié todas las referencias a la misma desde SOM.DCO.CustomWebControls.MultiSelectGridView.js a SOM.DCO.CustomWebControls.MultiSelectGridView.MultiSelectGridView.js y ahora funciona.

Otros consejos

Sólo tenía este mismo problema y que era una pesadilla para averiguar la solución. Finalmente lo he descubierto, gracias a este enlace .

Si hace clic en el nombre de la solución en el Explorador de soluciones, y elija "Propiedades", verá un cuadro de texto para el "espacio de nombres por defecto".

Este valor de espacio de nombres predeterminado debe ser el mismo que el espacio de nombres que está poniendo en frente de su recurso en la web.

Por lo tanto, si el namesspace por defecto en las propiedades de sólo "SOM" o sólo "CustomWebControls", es necesario cambiarlo a "SOM.DCO.CustomWebControls".

A continuación, utilice el mismo espacio de nombres completo en su. "Asamblea: WebResource" y su llamada a RegisterClientScriptInclude (o RegisterClientScriptResource, o cualquier otro método que está utilizando para conectar el recurso en la web

Lo único que he tenido un problema en el pasado está pasando el Type equivocado al llamar GetWebResourceUrl. Tienes que tener la Type ser un Type que proviene de la misma Asamblea que el Recurso incrustado.

Uso this.GetType() puede presentar problemas de incrustación recursos ( como se describe por Rick Strahl )

Todo lo demás se ve bien para mí.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top