2016-04-03 3 views
1

Я работаю над проектом, и я хочу проверить идентификатор пользователя, прежде чем позволить ему обновлять или удалять. Для этого я использую Entity Framework и ASP.NET MVC.Как получить userId с помощью таблицы моста Entity Framework

Таблица 1 является

public class User { 
    public int UserId { get; set; } 

    // more stuff here. 

    public ICollection<UserPost> UserPost{get; set;} 
} 

Вот моя вторая таблица

public class Post { 
    public int PostId { get; set; } 

    // more stuff 

    public ICollection<UserPost> UserPost{get; set;} 
} 

Это мой последний:

public class UserPost { 
    public int userPostId { get; set; } 
    public int userId {get; set; } 
    public int postId {get; set; } 

    public virtual User User { get; set; } 
    public virtual User Post{ get; set; } 
    // and more 
} 

На мой взгляд, я хочу, чтобы проверить пользователю обновить или удалить его сообщения, как этот код, но он не работает.

@model List<MyFinalProject.Core.Domain.Post> 
// Razor syntax here 
    @if (User.Identity.IsAuthenticated && User.IsInRole("Admin") || 
          Model[i].UserPost.Where(u => u.UserId == User.Identity.GetUserId<int>())) 
         { // some logic } 
+0

Попробуйте устранить неполадки в вашем взгляде, просто проверив первую часть условного, если ... затем проверьте вторую часть (после «или» ||). Я предполагаю, что это вторая часть логики. Если это так, избегайте использования логики linq. Скорее: Model [i] .UserPost.UserId == User.Identity.GetUserID() или что-то в этом роде ... надеюсь, что это поможет. –

+0

Yap Моя проблема во второй части условия после (||) Я попытался использовать Model [i] .UserPost.UserId, но я не смог получить доступ для него. @SRQCoder – Abdullah

ответ

1

Вы добавили услугу идентичности для пользователей к ConfigureServices() на Startup.cs?

Для получения дополнительной информации по найденной цене AspNet.Identity проверки этого:
https://docs.asp.net/en/latest/security/authentication/introduction-to-aspnet-identity.html

+0

Я уже делал это, но по-другому. Спасибо. – Abdullah

1

Большое вам спасибо за вашу помощь, я только что нашел ответ, и я хочу поделиться им с вами. Я изменяю только вторую часть после (||) условия:

@if (User.Identity.IsAuthenticated && User.IsInRole("Admin") || 
        Model[i].UserPost.Any(e => e.UserId == User.Identity.GetUserId<int>())) 
Смежные вопросы