WebResource es la página en blanco
-
18-09-2019 - |
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?
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í.