2016-09-23 32 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