2009-06-26 19 views
18

En una aplicación ASP.Net MVC 1.0, ¿es posible acceder a la configuración de la aplicación (MyProject.Properties.Settings.Default. *) Desde mi Vista (página aspx)?Acceder a la configuración de la aplicación desde ASP.Net MVC View

Lo he intentado pero al intellisense y al compilador no les gusta. Dice que es inaccesible debido al nivel de protección.

+0

Otra pregunta sería: ¿debería permitirse que la vista lea algo de la configuración? –

+0

Su pregunta relacionada (mencionada en el comentario en la respuesta de Haack): Necesita abrir el archivo de configuración, en la esquina superior derecha puede establecer la accesibilidad (interna vs. pública) – Bertvan

+1

Por favor. No lo hagas – Dariusz

Respuesta

18

Su vista solo debe ser responsable de procesar los datos que le proporciona el controlador. Su responsabilidad es por el diseño. Por lo tanto, recomendaría pasar los datos de la Aplicación a la vista desde dentro de su acción de Controlador.

Una vez dicho esto, la respuesta técnica a su pregunta es que ViewPage deriva de la página, por lo que puede simplemente hacer esto:

<%= Context.Application["setting"] %> 

Pero, de nuevo, no lo recomiendo.

+0

Gracias Phil. Tu explicación tiene sentido para mí. Estoy implementando un servicio de tipo PhotoGaller y he definido tamaños de imagen predeterminados en web.config. Quiero mostrar estos tamaños al usuario para que entiendan que sus imágenes deben ajustarse a ciertos tamaños, de lo contrario se redimensionará/rechazará. Por lo tanto, es puramente para fines de visualización en mi opinión. Pasaré esta información del Controlador a mi Vista. Gracias. –

+0

Una pregunta relacionada es: ¿por qué no puedo acceder a la clase de configuración fuertemente tipada desde mi vista? Me refiero al archivo settings.settings, que generalmente se accede a través de MyProject.Properties.Settings.Default.StronglyTypedSetting. Sé que no debería hacer esto, entiendo esto. Quiero entender por qué el compilador no me dará acceso a él. La clase de configuración está marcada como interna, y estoy intentando acceder desde el mismo proyecto, por lo que puedo decir, no debería haber ningún problema. –

+0

Pero, si la información en la configuración es de naturaleza más global - número de versión de la aplicación, por ejemplo - y la información debe ser mostrada por una o más páginas maestras, entonces esta no es una responsabilidad relacionada con el controlador. ¿Tendría más sentido manejar esto en una implementación de HttpHandler o HttpModule? – belugabob

26

tuve un problema similar al Saajid Ismail, donde mi configuración estaban en el namespace.Properties.Settings.Default.Setting que estaban allí, ya que son fuertemente tipados ..

para hacerlos accesibles simplemente tenía que cambiar el modificador de acceso enter image description here

+2

Gracias, esto me solucionó el problema :) –

Cuestiones relacionadas