2011-03-27 8 views
5

Duplicar posibles:
How to assign Profile values?utilizar un perfil en una aplicación Web ASP.NET

estoy leyendo un libro de ASP.NET que dice que no se puede utilizar si el perfil seleccione Aplicación web cuando comience un proyecto. Solo se ejecuta en el sitio web.

¿Hay alguna alternativa para la aplicación web? ¿O necesitas construir tu propio sistema de perfil?

+0

Ver este post demasiado [http://stackoverflow.com/questions/426609/how-to-assign-profile-values] – jamiebarrow

Respuesta

8

Puede utilizar el proveedor de perfiles si está utilizando una aplicación web en lugar de un sitio web, pero de manera predeterminada desde un código de página aspx no podrá hacer Profile.MyProperty.

Esto no es un gran problema ya que con un poco de esfuerzo podrá hacer algo similar. El ejemplo proporcionado en Converting a Web Site Project to a Web Application Project es un buen punto de partida sobre cómo usar el proveedor de perfiles con una aplicación web.

Para resumir la sección Código Perfil de objeto en la conversión del citado artículo, crear una clase ProfileCommon

public class ProfileCommon 
{ 
    public Teachers Teachers 
    { 
     get 
     { 
      return (Teachers) 
       HttpContext.Current.Profile.GetPropertyValue("Teachers"); 
     } 
     set 
     { 
      HttpContext.Current.Profile.SetPropertyValue("Teachers",value); 
     } 
    } 
} 

Luego, en el código aspx detrás de usted ahora puede hacer

ProfileCommon Profile = new ProfileCommon(); 
protected void Button1_Click(object sender, EventArgs e) 
{ 
    Teachers teachers = new Teachers(); 
    teachers.Add(new Teacher("scott")); 
    teachers.Add(new Teacher("bob")); 
    teachers.Add(new Teacher("paul")); 

    Profile.Teachers = teachers;  
} 

Una alternativa a instancia del ProfileCommon como un campo para cada página sería hacer esto y sus métodos estáticos y simplemente llamar a las propiedades de clase desde el código detrás de Profile.Teachers

public static class Profile 
{ 
    public static Teachers Teachers 
    { 
     //...... 
    } 
} 

Esto no es una gran ventaja, pero hace que su código sea más similar al de un proyecto de sitio web ASP.NET.

Editorial Comentario no es pertinente a la respuesta
Existen diferencias fundamentales entre los dos tipos de proyectos, pero para mis proyectos en los que prefieren las aplicaciones web. Tengo un sesgo porque la creación de un perfil de compilación para el Administrador de compilación de TFS es mucho más fácil para los proyectos de aplicaciones web que para los proyectos de sitios web. Además, parece que Microsoft enfatizó los proyectos del sitio web y luego se retiró de ellos a favor de proyectos de aplicaciones web.

+0

Es posible que desee ProfileCommon a heredar de ProfileBase, tales como: ProfileCommon clase pública: ProfileBase – Patrik

Cuestiones relacionadas