-2

我有一些来自 4guysfromrolla 网站的代码,它提供了有关以具有管理员凭据的另一个用户身份登录的教程。

我已经完成了大部分工作,但是在将这部分代码从 VB 转换为 C# 时遇到了一些麻烦。我翻译困难的部分是第if一句话。

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

如果有人能帮我翻译一下,我将不胜感激!这是页面检测用户是否确实是作为另一个用户登录的管理员的部分,因此我可以以编程方式显示一个带有提醒的面板。

4

6 回答 6

1

来自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)
    }
}
于 2013-02-06T10:50:12.347 回答
1
if (Page.User.Identity != null && Page.User.Identity is FormsIdentity)
{
    ....
}

我假设你对其余的没问题。

于 2013-02-06T10:50:32.527 回答
1
If Page.User.Identity IsNot Nothing AndAlso TypeOf Page.User.Identity Is FormsIdentity Then

将会

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

AndAlso只是一个AND运算符,仅在左侧为时才评估左侧false(C# 中的默认行为)。

要检查对象是否为空,请与 比较null,要检查对象是否属于某种类型,请使用is运算符。

于 2013-02-06T10:51:34.100 回答
0

怎么样

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)
   }
}
于 2013-02-06T10:51:28.103 回答
0

Stackoverflow 不是翻译服务,但是...

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)
    }
}
于 2013-02-06T10:52:28.917 回答
0

你要求我们做的基本上是教书C#

正如我最初在评论中提到的,如果您不确定,请使用转换器。但是,在那之后,将您的代码中的差异与您的VB.NET代码进行比较C#并查看结构差异。

VB.NET

If True Then
  'Do Stuff
End If

C#

if(true){
 //Do stuff
}

与上述不同的是,条件被包裹在()并且被替换为。你不应该直接拿出代码,阅读它然后比较它。然后尝试自己重新编写:)thenend ifparenthesis

于 2013-02-06T10:53:43.450 回答