Pregunta

Tengo algún código del sitio web de 4GUYSFROMROLLA, que proporciona un tutorial sobre el inicio de sesión como otro usuario con credenciales de administración.

Lo tengo que la mayor parte de ellos funciona, pero tengo algunos problemas para traducir esta parte del código de VB a C #. La parte que estoy teniendo problemas para traducir es la primera. if declaración.

If Page.User.Identity IsNot Nothing AndAlso TypeOf Page.User.Identity Is FormsIdentity Then
   Dim ident As FormsIdentity = CType(Page.User.Identity, FormsIdentity)
   Dim ticket As FormsAuthenticationTicket = ident.Ticket
   Dim AdminUserName As String = ticket.UserData

   If Not String.IsNullOrEmpty(AdminUserName) Then
      'An Admin user is logged on as another user... 
      'The variable AdminUserName returns the Admin user's name
      'To get the currently logged on user's name, use Page.User.Identity.Name
   Else
      'The user logged on directly (the typical scenario)
   End If
End If

¡Estaría muy agradecido si alguien pudiera ayudarme a traducir esto! Esta es la parte donde la página detecta si el usuario es, de hecho, un administrador iniciando sesión como otro usuario, para que pueda mostrar programáticamente un panel con un recordatorio de eso.

¿Fue útil?

Solución

Desde http://converter.telerik.com/:

if (Page.User.Identity != null && Page.User.Identity is FormsIdentity) {
    FormsIdentity ident = (FormsIdentity)Page.User.Identity;
    FormsAuthenticationTicket ticket = ident.Ticket;
    string AdminUserName = ticket.UserData;

    if (!string.IsNullOrEmpty(AdminUserName)) {
    //An Admin user is logged on as another user... 
    //The variable AdminUserName returns the Admin user's name
    //To get the currently logged on user's name, use Page.User.Identity.Name
    } else {
        //The user logged on directly (the typical scenario)
    }
}

Otros consejos

if (Page.User.Identity != null && Page.User.Identity is FormsIdentity)
{
    ....
}

Supongo que estás bien con el resto.

If Page.User.Identity IsNot Nothing AndAlso TypeOf Page.User.Identity Is FormsIdentity Then

Sería

if( Page.User.Identity != null && Page.User.Identity is FormsIdentity )

AndAlso es solo un Y Operador que solo evalúa el lado izquierdo si el lado izquierdo es false (Comportamiento predeterminado en C #).

Para comprobar si un objeto no es nada, compare con null, y para comprobar si un objeto es de un tipo, use el is operador.

Qué tal si

if (Page.User.Identity != null && Page.User.Identity is FormsIdentity)
{
   var ident = (FormsIdentity)Page.User.Identity;
   var ticket  = ident.Ticket;
   var AdminUserName = ticket.UserData;

   if (!String.IsNullOrEmpty(AdminUserName))
   {
      'An Admin user is logged on as another user... 
      'The variable AdminUserName returns the Admin user's name
      'To get the currently logged on user's name, use Page.User.Identity.Name
   }
   else
   {
      'The user logged on directly (the typical scenario)
   }
}

StackOverFlow no es un servicio de traducción, sin embargo ...

var fIdent = User.Identity as FormsIdentity;
if(fIdent != null)
{
    string adminUserName = fIdent.Ticket.UserData;
    if(!String.IsNullOrEmpty(adminUserName))
    {
        // an Admin user is logged on as another user... 
    }
    else
    {
        // the user logged on directly (the typical scenario)
    }
}

Lo que nos estás pidiendo que hagamos esencialmente enseñar. C#.

Como mencioné inicialmente en mi comentario, use un convertidor si no está seguro. Después de eso, sin embargo, compara las diferencias en su VB.NET código a su C# Y ver las diferencias estructurales.

Vb.net

If True Then
  'Do Stuff
End If

C#

if(true){
 //Do stuff
}

Diferencias de lo anterior, la condación se envuelve en () y then y end if son reemplazados por parenthesis. No debe simplemente tomar el código directamente, leerlo y luego compararlo. Luego intenta volver a escribirlo tú mismo :)

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