2013-08-24 6 views
0

Пожалуйста, проявите терпение. Я новичок в MVC. Я создал модель под названием «Книга», которая представляет собой текст книги, в моем IdentityModel я добавил это:Как сохранить зарегистрированного пользователя в моей таблице?

public class User : IUser 
{ 

// ... 

[Key] 
public string Id { get; set; } 

public string UserName { get; set; } 

// Code First will use this to create a foreign key in book 
public virtual ICollection<Book> Uploaders { get; set; } 

} 

Это создало внешний ключ в моей таблице книги, которая является то, что я хотел. Теперь в моем книжном контроллере я просто хочу связать книгу с пользователем, когда они нажмут «создать». Это где я застрял

// 
// POST: /Book/Create 
[HttpPost] 
[ValidateAntiForgeryToken] 
public ActionResult Create(Book book) 
{ 
    if (ModelState.IsValid) 
    { 
     // Save uploader here 
     // book.Uploader = User.Identity; 

     db.Books.Add(book); 
     db.SaveChanges(); 
     return RedirectToAction("Index"); 
    } 

    return View(book); 
} 
+0

Что делает ваш 'модель Book' выглядеть? – bluetoft

+0

Модель книги: http://pastie.org/private/zmlggavnes65vhmfy5e6lg –

ответ

0

на вашей книге Модель:

public virtual User User {get;set;} 
public int UserId {get;set;} 

и назначить, что в вашем контроллере.

book.User = User; 
+0

В моем контроллере на этой строке «book.User = Пользователь»; Я получаю: «Невозможно неявно преобразовать тип« System.Security.Principal.IPrincipal »в« EDU_Rent.Models.User ». Явное преобразование существует (вы пропускаете листинг?)« Также новый ID пользователя не является типом внешнего ключа в моей БД. –

+0

получите своего пользователя от db, а затем назначьте ... db.Users.Get (Use) .... – bluetoft

+0

Я не могу получить доступ к db.Users от моего контроллера, потому что мой класс RentContext не содержит DbSet пользователей, это делает IdentityModels. Для refrence im использует все пользовательские материалы по умолчанию, которые поставляются с новым проектом MVC 5. Кроме того, я пытаюсь использовать текущего пользователя в системе, а не тот, который я выбираю вручную из БД, атрибут UserId по умолчанию в таблице Users - это строка, а не int. –

0

Пользователь userId текущего пользователя может быть найден в заявке на свойство пользователя Контроллера.

Предполагая, модель:

public class Book 
{ 
    [Key] 
    public int Id { get; set; } 

    public virtual BookUser User { get; set; } 
    [ForeignKey("User")] 
    public string UserId { get; set; } 
} 

Вы можете установить UserId:

// 
// POST: /Book/Create 
[HttpPost] 
[ValidateAntiForgeryToken] 
[Authorize] // must be authenticated to be able to set UserId 
public ActionResult Create(Book book) 
{ 
    if (ModelState.IsValid) 
    { 
     UserId = ((ClaimsPrincipal)User).FindFirst(c => c.Type == ClaimTypes.NameIdentifier).Value` 

     db.Books.Add(book); 
     db.SaveChanges(); 
     return RedirectToAction("Index"); 
    } 

    return View(book); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^