Pregunta

Tengo un control de vista / user parcial llamado LogOnUserControl que puedo mostrar en una barra lateral en mi sitio (definido en Site.Master). También tengo una vista LogOn separada, que también hace que el LogOnUserControl.

No quiero dos instancias del LogOnUserControl en la vista de inicio de sesión, porque es simplemente confuso, por lo que mi pensamiento actual es incluir una condición como

// Semi-pseudocode
if (!Request.IsAuthenticated) && View.Name != "LogOn")

en la LogOnUserControl.

Esto se siente mal, como ahora la vista parcial sabe acerca de la opinión de inicio de sesión. Además, no puedo encontrar la manera de obtener el nombre de la vista, lo que refuerza la sensación de que estoy haciendo algo mal! : -)

Editar: Existe la complicación adicional de que la misma vista parcial se utiliza tanto para la vista inicio de sesión y la barra lateral en Site.Master.

¿Fue útil?

Solución

En la página principal envolver el contenido de la zona de la barra lateral con las etiquetas de las áreas de contenido y darle un id igual que SideBarContentArea o algo así. Lo que esto hace es crear una nueva área de contenido que se puede elegir para anular en las páginas de la base principal y especifica el contenido por defecto que se mostrará cuando no se implementa en las páginas de niño. Ahora en la página de inicio de sesión único que tiene que hacer es reemplazar el SideBarContentArea y no incluir el control de acceso en esta ocasión.

Bada Bing!

Otros consejos

¿Usted ha considerado el uso de una página maestra diferente para el inicio de sesión Vista sin la entrada parcial en la barra lateral? Si usted está preocupado por la duplicación de marcado HTML que podría utilizar páginas maestras anidadas para evitar ese problema.

Se puede almacenar un indicador en ViewData para indicar esto. Si desea fuerte de tipo o simplemente acceder a él directamente depende de usted. Así que en su página principal que podría tener este aspecto:

<% if (ViewData["HideLogOnUserControl"] == "Y") { %>
    Insert HTML here
<% } else { %>
    Insert HTML here
<% } %>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top