tsh*_*ake 5 c# asp.net-mvc entity-framework viewmodel
我必须在此前言,我对视图模型很新.话虽这么说,我希望有一个带付款和订阅信息的创建视图,比如付款注册页面.我想在我的EF模型中更新多个实体,并且我计划通过viewmodel进行更新.问题是当我尝试根据我的控制器动作创建视图时..我收到此错误:

我的视图模型使用独立的类来GET/POST数据到我的看法......也许我会对此错误的方式.. 它必须有一个主键?它是否需要在我的数据库中并添加为EF实体?我该如何解决?谢谢
这是viewmodel代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MVCProject.DataAccess;
using System.ComponentModel.DataAnnotations;
namespace MVCProject.Models.ViewModel
{
public class PaymentSetupViewModel
{
//Subscription.cs
[Required(ErrorMessage = "required")]
public string Frequency { get; set; }
public DateTime Date { get; set; }
//PaymentMethod.cs
[Required(ErrorMessage = "required")]
[CreditCard]
[Display(Name = "Card Number")]
public string CCNumber { get; set; }
[Required(ErrorMessage = "required")]
[Display(Name = "Card Expiration")]
public DateTime CCExpiration { get; set; }
[Required(ErrorMessage = "required")]
[Display(Name = "CVV2")]
public string CCCVV2 { get; set; }
[Required(ErrorMessage = "required")]
[Display(Name = "Bank Name")]
public string BankName { get; set; }
[Required(ErrorMessage = "required")]
[Display(Name = "Account Number")]
public string BankAccountNumber { get; set; }
[Required(ErrorMessage = "required")]
[Display(Name = "Routing Number")]
public string BankRoutingNumber { get; set; }
[Required(ErrorMessage = "required")]
public string ProductName { get; set; }
//AspNetUser.cs properties -- identity list of logins
public string UserName { get; set; }
//PaymentSubscriptionViewModels.cs properties
public int SelectedValue { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
小智 13
即使这是一个老问题,我认为这可能会有所帮助:在创建视图时(我怀疑在这种情况下是局部视图),删除数据上下文类值.如果已设置,即使您正在创建基于非实体框架的视图,Visual Studio也会认为您正在使用实体框架,因此它会抛出该错误.
它必须有主键吗?
不。视图模型是一个简单的 POCO 类。除非您想在 UI/Validation/Business 层中进行一些自定义验证,否则不需要使用 [Key] 属性来修饰任何属性。
它是否需要位于我的数据库中并作为 EF 实体添加?
不。视图模型的目的是在视图和操作方法之间传递数据。您将从一个视图模型对象中读取数据,并根据需要将其保存在 2 个或更多表中。视图模型应该是精简且扁平的,因为它是针对特定视图的。
您看到的错误可能是 Visual Studio 中的错误。为什么不手动创建一个操作方法、一个视图(不要在向导中选择模型)并更新视图以使用您的视图模型作为model
| 归档时间: |
|
| 查看次数: |
5836 次 |
| 最近记录: |