5

Używam ASP.Net Identity 2, ale wkrótce mam nadzieję, że zmieni się na Identity 3, gdy stanie się bardziej stabilny (czy ktoś wie, kiedy to może być?). Oto przykład z mojego kodu:W jaki sposób można dokonać Identity.GetUserId(), aby zwrócić Guid zamiast łańcucha?

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

zawartości sklepy stół ModifedBy jako uniqueidentifier i obiektu Content przypisuje typ danych z GUID do ModifiedBy

Kiedy patrzę na podpis GetUserId() to zwraca strunowy.

Jak mogę zabrać użytkowników UserId i umieścić w ModifiedBy, który jest Guid?

+0

Dzieje się tak, ponieważ UserId może być nie tylko guid, więc musisz przekonwertować się, jeśli masz pewność, że używasz tylko przewodników. Identity V3 jest przeznaczone dla ASP.NET 5, więc należy oczekiwać wydania wersji 3 w tym samym czasie, co nowy program ASP.NET. – trailmax

Odpowiedz

7

Guid może mieć łańcuch jako konstruktor

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

+3

Podejdę z takim podejściem. Istnieje ogólna wersja 'GetUserId ', ale pod nią używa 'Convert.ChangeType', która wymaga argumentu wartości do implementacji' IConvertible' którego 'Guid' nie zawiera. – MotoSV

3

Można użyć Guid.Parse() lub() Guid.TryParse

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

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

Jak byłem w kółko przy użyciu tej samej metody dodałem następujące rozszerzenia:

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

, a następnie użyłem tego:

User.Identity.GetUserId().ToGuid()