2016-09-14 4 views
-1

私のエンティティフレームワークテーブルの1つで、Identity ApplicationUserモデルを外部キーとして使用しようとしています。ApplicatonUserの.NET Razor DropDownListの値がNULLです

var context = new ApplicationDbContext(); 
var users = context.Users.OrderBy(x => x.Email).ToList(); 
model.Users = new SelectList(users as System.Collections.IEnumerable, "Id", Email"); 

をそしてビュー自体に:

@Html.DropDownListFor(x => x.User, Model.Users, "", new { required = "required" }) 

ビューが一覧で正しく移入されかみそりビュー(C#の)のためのモデルを移入するには、これは私がやっているものですユーザー。フォームを選択して送信すると、「ユーザー」フィールドはnullになります。カスタムEFコンテキスト内でApplicationUserモデルを統合する正しい方法は何ですか?

+2

のですか?それ以外では、あなたのコードは 'IEnumerable'への安全なキャスティングを必要としない限り、正常に見えます。単純に' users'を使うことができます。 – Shyju

+0

送信ボタン(Html.BeginForm())だけです。しかし、Userの値はnullです。私は困惑している。 – jallen

+0

フォームが送信される(そしてUserプロパティがnullであることがわかった)アクションアクションメソッドを表示する必要があります。 Userプロパティはどのような型ですか? – Shyju

答えて

1

あなたは、コントローラ

ViewBag.Users = new SelectList(db.Users, "Id", "UserName");

で、ビュー

@Html.DropDownList("User", ViewBag.Users as SelectList, new { @class = "form-control" })

でこの を行うことができますポスト

public ActionResult(Model m , string User) 
 
{ 
 
    var user = db.Users.Find(User) 
 
    var model = new Model 
 
    { 
 
     User =user, 
 
     etc, 
 
     etc... 
 
    } 
 
}

MI場合のユーザの 'ID' の文字列は、選択した値を使用してフォームを提出する方法

enter image description here

+0

あなたはDropDownListForの代わりにこれが動作すると言っていますか?私のユーザーは、別のコンテキスト内にあります。それが問題を作り出しているのだろうか。 – jallen

+0

はい、それは私のために働く、画像を見て私の答えを編集するオプションです – Xique

+0

私はすでにこれをやっているが、ApplicationDserをApplicationDbContextからマッピングしようとしているので、これを答えとしてマークしていませんでした。 – jallen

関連する問題