2016-05-05 10 views
0

私は現在、ユーザーが他のユーザーをグループに追加できるプロジェクトを作成中です。私は、追加したい他のユーザの電子メールアドレスにユーザが入力できるテキストボックスを作った。私の計画は、このテキストをデータベース内のテーブルと比較して、現在存在するかどうかを確認することです。データベース内のユーザー名を確認してください

これは私が私のコントローラでそれをやろうとしています方法です。これを実行するとき

[HttpPost] 
public ActionResult Manage(GroupManage gm) 
{ 
    HttpCookie groupId = new HttpCookie("selectBoxValue"); 
    groupId = Request.Cookies["selectBoxValue"]; 
    int user = Convert.ToInt32(groupId.Value); 

    if (gm.addUser == gm.ApplicationUser.Email) 
    { 
     var groupmember = new GroupUser { ApplicationUserId = gm.ApplicationUser.Id, GroupId = user }; 
     db.GroupUsers.Add(groupmember); 
     db.SaveChanges(); 
    } 

    return View(); 
} 

私はエラーを取得:

Object reference not set to an instance of an object.

そして、私のデバッガでApplicationUser.Emailの値が(nullです私はifのステートメントで比較するために使用しています)。 gm.addUserには正しいメールアドレスが含まれていますが。だから私はテキストボックスから正しい入力を得ている。しかし私は入力をデータベースと比較する方法を理解していません。

+2

[NullReferenceExceptionとは何か、それを修正するにはどうすればいいですか?](http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix -it) – yaakov

+0

ここで、はデータベースからの値ですか? –

+0

私は、databseからの値がApplicationUserを通してaccsessibleであることを期待していましたが、私のデバッガではnullと判明しました。どこが間違っていますか? – Seb

答えて

1
if (db.ApplicationUser.Any(x => x.EmailAdress.ToUpper() == gm.addUser.ToUpper()) 
{ 
    // do something 
} 

場合ApplicationUser一致gm.addUserが、その後何かをデータベーステーブル内の任意のメールアドレス

.ToUpper ...比較は、より効率的にするために使用されているので、あなたがメールアドレスを持っている場合[email protected]データベース内のと誰かが[email protected]と入力してデータベースに追加しますが、.ToUpperはデータベースの値とユーザーの値をすべて大文字に変更して比較します。

関連する問題