2016-09-23 35 views
0

我在ASP.NET Core項目中創建了模型。該模型具有「Id」屬性。當我想在數據庫中保存一個模型時,它說模型的ID爲空。下面是代碼:ASP.NET Core - 模型的ID /密鑰無法獲得值

[HttpPost] 
[ValidateAntiForgeryToken] 
public async Task<IActionResult> SaveMessage(MessageViewModel model, string returnUrl = null) 
{ 
    ViewData["ReturnUrl"] = returnUrl; 
    if (ModelState.IsValid) 
    { 
     var message = new MessageModel 
     { 
      SenderName = await _userManager.GetUserNameAsync(await _userManager.GetUserAsync(User)), 
      Title = model.Title, 
      Email = model.Email, 
      Message = model.Message, 
      SavedDate = DateTime.Now, 
      Sent = false 
     }; 
     var userMessage = new UserMessage 
     { 
      ApplicationUser = await _userManager.GetUserAsync(User), 
      MessageModel = message 
     }; 

     _context.MessageModel.Add(message); 
     _context.UserMessage.Add(userMessage); 
     await _context.SaveChangesAsync(); 

     return RedirectToAction(nameof(HomeController.Home), "Home"); 
    } 
    return RedirectToAction(nameof(MessageController.EditMessage), "Message", model); 
} 

這裏是模型:

public class MessageModel 
{ 
    public string Id { get; set; } 
    public string SenderName { get; set; } 
    public string Title { get; set; } 
    public string Email { get; set; } 
    public string Message { get; set; } 
    public DateTime SavedDate { get; set; } 
    public bool Sent { get; set; } 

    public List<UserMessage> UserMessages { get; set; } 
} 

我怎麼可以給一個值的id? 謝謝!

+0

請發佈相關型號代碼,並告訴我們哪個型號有錯誤。 –

+0

如果Id不在模型中。它意味着你需要在視圖中提供值,例如通過使用輸入隱藏的'@ Html.Hidden()' –

回答

0

沒有看到你的模型定義,這是我的猜測:

你的身份證是最有可能你期待數據庫設置主鍵。然而,當你定義你的模型時,你可能沒有指定Id屬性作爲鍵,在你的代碼中你也沒有設置它,這就是爲什麼它是空的。

0

如果您是發佈在自己的網頁模型數據,那麼你可能需要對模型屬性FromBody標籤:

public async Task<IActionResult> SaveMessage([FromBody] MessageViewModel model, string returnUrl = null) 

它告訴你行動的.NET核心的方式,它應該嘗試從序列化請求正文。它與.Net中的模型綁定有點不同...... ..非核心......我們現在叫什麼不是核心?

無論如何 - check it out。這只是一個猜測 - 但如果模型中的其他屬性也是空值/默認值,那麼這可能是發生了什麼。

+0

「not-core」 - > Full Framework? –

+0

Ha。沒有辦法實現「全面框架」......它聽起來比核心更好,我無法想象雷德蒙德的營銷團隊會坐立不安,而且勢頭強勁。 – bri