5

我正在使用ASP.Net Identity 2,但很快希望在Identity 3变得更加稳定时更改为Identity 3(任何人都知道这可能是什么时候?)。下面是我的代码示例:如何使Identity.GetUserId()返回Guid而不是字符串?

content.ModifiedBy = User.Identity.GetUserId(); 

内容表存储ModifedBy作为唯一标识符和内容对象指定的Guid的数据类型为ModifiedBy

当我看到了GetUserId(签名)它返回一个串。

那么我怎样才能把用户的用户ID,并把它放到ModifiedBy这是一个Guid?

+0

这是因为UserId不仅可以是guid,所以如果您确定只使用guid,则需要转换自己。 Identity V3适用于ASP.NET 5,所以期待v3与新ASP.NET的同时发布。 – trailmax 2015-04-06 10:31:48

回答

7

一个GUID可以接受字符串作为构造

content.ModifiedBy =新的GUID(User.Identity.GetUserId());

+3

我会用这种方法。有一个通用版本'GetUserId ',但是它下面使用'Convert.ChangeType',它需要value参数来实现'Guid'不能实现的'IConvertible'。 – MotoSV 2015-04-05 18:18:06

3

可以使用Guid.Parse()或Guid.TryParse()

content.ModifiedBy = Guid.Parse(User.Identity.GetUserId()); 

https://msdn.microsoft.com/en-us/library/system.guid.parse%28v=vs.110%29.aspx

正如我所用方法相同的方法反复添加以下扩展名:

public static class ExtensionMethods 
{ 
    public static Guid ToGuid(this string value) 
    { 
     Guid result= Guid.Empty; 
     Guid.TryParse(value, out result); 
     return result;   
    } 
} 

然后我用这个:

User.Identity.GetUserId().ToGuid() 
相关问题