Вы можете получить к нему доступ по-разному, в зависимости от того, где вы находитесь в коде, но поскольку вы находитесь в контроллере, у вас должен быть такой метод расширения, как этот User.Identity.GetUserId()
; В этом случае это будет строка, но вы можете ее проанализировать, но убедитесь, что ваша таблица AspNetUsers
имеет идентификатор типа данных int
. Предполагая, что это правда, вы можете сказать:
[HttpPost, Authorize]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "CompanyName,Telephone")]Company company)
{
try
{
if (ModelState.IsValid)
{
company.Id = int.Parse(User.Identity.GetUserId());
db.Companies.Add(company);
db.SaveChanges();
return RedirectToAction("Index");
}
}
catch (DataException /* dex */)
{
ModelState.AddModelError("", "Unable to save changes.");
}
return View(company);
}
Не забудьте применить атрибут [Authorize]
.
Если вы хотите сохранить больше данных от пользователя в Company
, вам нужно получить пользователя из базы данных, а затем извлечь необходимые данные пользователя из нее и затем сохранить их в объекте компании, как показано ниже:
var user = UserManager.FindById(int.Parse(User.Identity.GetUserId()));
company.Username = user.Username;
//and so on...
Здесь у вас есть для этого более подробная информация: