gpt4 book ai didi

c# - asp.net core (mvc) ViewModel请求主键

转载 作者:行者123 更新时间:2023-11-30 23:00:49 25 4
gpt4 key购买 nike

在尝试从包含我需要同时更新的 2 个模型的字段的 ViewModel 构建 View 时,我不断收到错误消息:

运行所选代码生成器时出错:“实体类型‘UserRegViewModel’需要定义主键。”

如果我添加主键

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

对于 ViewModel,在数据库中为 ViewModel 创建了一个包含所有字段的表,我怀疑这是 ViewModel 的正确用法。

我的意图是使用 ViewModel 从 View 中获取表单,然后在我的 Controller 中,将每个属性从 VM 映射到每个域模型。如果我保留声明的主键,我可以手动执行此操作(例如,将 ViewModel 发送到 View,并将 ViewModel 返回到我的 HttpPost Controller 的参数中),但我假设我一定是做错了什么应该是这样。

我相信我遵循所有约定(模型、 View 、 Controller 、ViewModels 的独立文件夹)和 ViewModels 文件夹中名为 xxxxViewModel.cs 的 ViewModel。

编辑:完整的 UserRegViewModel 代码:

using SERVICAPUY.Models.Business;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading.Tasks;


namespace SERVICAPUY.ViewModels
{
public class UserRegViewModel
{
//[Key]
//public int Id { get; set; } // must be public!
//public Usuario usuario { get; set; }
//public IEnumerable<Prestamo> Prestamos { get; set; }

//Usuario
[Required(ErrorMessage = "El Nombre es obligatorio")]
public string Nombre { get; set; }
public string Cedula { get; set; }
public string Direccion { get; set; }
public string Direccion2 { get; set; }
public string Ciudad { get; set; }
public string Estado { get; set; }
[Display(Name = "Código Postal")]
public string CodPostal { get; set; }
[Display(Name = "País")]
public string Pais { get; set; }


public string Telefono { get; set; }
[DataType(DataType.Date)]
public DateTime? FechaNacimiento { get; set; }

//Prestamo
public Auto auto { get; set; }

[Required(ErrorMessage = "Cuántas cuotas son?")]
[Range(1, 120, ErrorMessage = "El número de cuotas debe ser entre 1 y 120.")]
public int Cuotas { get; set; }
[Required(ErrorMessage = "Cuál es el monto del préstamo?")]
public double Monto { get; set; }
[Required(ErrorMessage = "Cuál es el interés?")]
[Display(Name = "Interés")]
public double? Interes { get; set; }
[Required(ErrorMessage = "Qué día del mes le toca al usuario hacer el pago?")]
[Display(Name = "Día de Pago")]
[Range(1, 31, ErrorMessage = "El día de pago corresponde a día del mes.")]
public int? DiaDePago { get; set; }
[Display(Name ="Tipo de Prestamo")]
public tipoPrestamo tipoPrestamo { get; set; }
public Estatus Estatus { get; set; }
}
}

最佳答案

@ZivWeissman 找到了答案。它在评论中。 DbContext 类中有一个对 ViewModel 的引用。也许这会引发另一个问题,因为我确定我没有在其中添加引用,但现在,问题已解决。

关于c# - asp.net core (mvc) ViewModel请求主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51369732/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com