2016-06-22 4 views
0

具体的には、データベースには、現在ログインしているユーザーの電子メールを格納するusernameなどのフィールドが含まれている場合があります。ユーザーが新しいアイテムを作成するとき、私は自動的にUser.Identity.GetUserName()のようなコマンドでユーザー名を取得し、それを入力することなく自動的にユーザー名フィールドに入力したいと考えています(しかし、入力する他のフィールドがあるかもしれませんフォームで)。これを行う最善の方法は何ですか?EFを使用したASP.NET MVCでは、モデルの各列をフォームに入力するように求めることなく、ユーザーがより多くのデータを作成できるようにするにはどうすればよいですか?

コントローラは、次のようになります。あなたには、いくつかの基本的な情報が事前にされたモデルに渡すことができます作成​​アクションで

//GET: Reservations/Create 
    public ActionResult Create() 
    { 
     return View(); 
    } 

    // POST: Reservations/Create 
    [HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Create([Bind(Include = "ID,Username,StartDate,EndDate,Destination,Department")] Reservation reservation) 
    { 
     if (ModelState.IsValid) 
     { 
      db.Reservations.Add(reservation); 
      db.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 

     return View(reservation); 
    } 
+1

フォームでは実行しないでください。それは偽装することができます。変更を保存する前に、コントローラーの情報でモデルを更新してください。あなたが何らかの認証を要求しているとすれば、情報を簡単に利用できるようになります。 – dbugger

答えて

0

。以前に入力したフォームを再度開くのと同じ方法でフォームをあらかじめ入力します。あなたはデータベースの本当のエントリでそれを戻す必要はありません。

1

あなたの質問のように聞こえるのは、実際には「ユーザーに関する情報をどのように取得するのですか?」です。現在のユーザーデータにログインで取得するには:

var user = UserManager.FindById(User.Identity.GetUserId()); 

を次に、ユーザー名したい場合:今

user.UserName 

を、技術的には、ユーザー名は次のことができるようにすべきいくつかのプロパティの一つでありますUserオブジェクトから直接取得:

User.Identity.Name 

追加の何かを必要とあれば、本当に、あなただけのユーザーを照会する必要があるだろう:名前、メールなど

関連する問題