私はプロジェクトで作業しています。ユーザーIDを確認してから更新または削除を許可します。私はEntity FrameworkとASP.NET MVCを使っています。ブリッジテーブルを使用してuserIdを取得する方法Entity Framework
表1に、これは
public class Post {
public int PostId { get; set; }
// more stuff
public ICollection<UserPost> UserPost{get; set;}
}
私の第二のテーブルここで
public class User {
public int UserId { get; set; }
// more stuff here.
public ICollection<UserPost> UserPost{get; set;}
}
である私の最後の1:私の見解では
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 }
条件式の最初の部分をチェックするだけで問題を解決してみてください。次に、2番目の部分をテストしてください( 'または' ||の後に2番目の部分をテストしてください)。 )。私はそれが問題の論理の2番目の部分だと思います。その場合は、linqロジックを使用しないでください。むしろ:Model [i] .UserPost.UserId == User.Identity.GetUserID()かそのようなもの...これが役立つことを望みます。 –
Yap私の問題は、([||)の後の条件の第2部分で、Model [i] .UserPost.UserIdを使ってみましたが、アクセスできませんでした。 @SRQCoder – Abdullah