C# 如何使用ViewModel查看两个表中的数据并注册两个表

C# 如何使用ViewModel查看两个表中的数据并注册两个表,c#,asp.net-mvc,viewmodel,C#,Asp.net Mvc,Viewmodel,我在asp.netMvc中使用了DatabaseFirst。我已经为一个视图使用了多个表,并在数据库中注册 1。我有一个带有修复字段的用户表: CREATE TABLE [dbo].[Users]( [ID] [int] IDENTITY(1,1) NOT NULL, [UserType] [int] NOT NULL, [UserName] [nvarchar](50) NOT NULL, [PassWord] [nvarchar](50) NOT NULL, [PhoneNumber] [v

我在asp.netMvc中使用了DatabaseFirst。我已经为一个视图使用了多个表,并在数据库中注册

1。我有一个带有修复字段的用户表:

CREATE TABLE [dbo].[Users](
[ID] [int] IDENTITY(1,1) NOT NULL,
[UserType] [int] NOT NULL,
[UserName] [nvarchar](50) NOT NULL,
[PassWord] [nvarchar](50) NOT NULL,
[PhoneNumber] [varchar](11) NOT NULL,
[Address] [nvarchar](max) NOT NULL,
[ChargeAccount] [bigint] NULL,
public class UserViewModel
{
    protected UserTypeFeatch userTypeFeatch;
    public UserViewModel()
    {
        userTypeFeatch = new UserTypeFeatch();
    }
    public virtual UserType UserType1 { get; set; }
    public int UserTypeID { get; set; }
    public string UserTypeName { get; set; }

    public int SelectedUserType;
    public IEnumerable<UserType> UserTypes
    {
        get
        {
            return userTypeFeatch.GetUserType();
        }
        set {  }
    }
    public string UserName { get; set; }
    public string PassWord { get; set; }
    public string PhoneNumber { get; set; }
    public string Address { get; set; }
}
userType字段是userType表中的外键,包括(“Admin”、“User”、…) 我还有另一个带有自定义字段的表:

CREATE TABLE [dbo].[Fields](
[ID] [int] IDENTITY(1,1) NOT NULL,
[FieldName] [nvarchar](50) NOT NULL,
[FieldTypeID] [int] NOT NULL,
[DisplayFieldName] [nvarchar](50) NOT NULL,
该字段类型是包含的表(“textbox”,…) 现在,我想创建要插入的RegisterPerform。另外,我在获取UserTypeDropDown的selectedvalue时遇到问题

2。我写了这个视图模型:

CREATE TABLE [dbo].[Users](
[ID] [int] IDENTITY(1,1) NOT NULL,
[UserType] [int] NOT NULL,
[UserName] [nvarchar](50) NOT NULL,
[PassWord] [nvarchar](50) NOT NULL,
[PhoneNumber] [varchar](11) NOT NULL,
[Address] [nvarchar](max) NOT NULL,
[ChargeAccount] [bigint] NULL,
public class UserViewModel
{
    protected UserTypeFeatch userTypeFeatch;
    public UserViewModel()
    {
        userTypeFeatch = new UserTypeFeatch();
    }
    public virtual UserType UserType1 { get; set; }
    public int UserTypeID { get; set; }
    public string UserTypeName { get; set; }

    public int SelectedUserType;
    public IEnumerable<UserType> UserTypes
    {
        get
        {
            return userTypeFeatch.GetUserType();
        }
        set {  }
    }
    public string UserName { get; set; }
    public string PassWord { get; set; }
    public string PhoneNumber { get; set; }
    public string Address { get; set; }
}
public类UserViewModel
{
受保护的UserTypeFeatch UserTypeFeatch;
公共用户视图模型()
{
userTypeFeatch=新的userTypeFeatch();
}
公共虚拟用户类型UserType1{get;set;}
public int UserTypeID{get;set;}
公共字符串UserTypeName{get;set;}
公共int-SelectedUserType;
公共IEnumerable用户类型
{
得到
{
返回userTypeFeatch.GetUserType();
}
集合{}
}
公共字符串用户名{get;set;}
公共字符串密码{get;set;}
公共字符串PhoneNumber{get;set;}
公共字符串地址{get;set;}
}

我的问题是如何在VM中设置CustomeFields并检索所选值并注册CustomeFields。要获取下拉列表的值:

在视图模型中还需要两个属性,可以将它们绑定到下拉列表

public ICollection<SelectListItem> UserTypes { get; set; }
public long UserTypeId { get; set; }

所以现在在post方法中,您将获得所选的用户类型Id。

以获取下拉列表的值:

在视图模型中还需要两个属性,可以将它们绑定到下拉列表

public ICollection<SelectListItem> UserTypes { get; set; }
public long UserTypeId { get; set; }

因此,现在在post方法中,您将获得选定的用户类型Id。

在视图模型中包括以下代码

IEnumerable<SelectListItem> UserTypesItemList = UserTypes.Select(x => new SelectListItem { Text = x.UserTypeName, Value = x.UserTypeID.ToString() });
IEnumerable UserTypesItemList=UserTypes.Select(x=>newselectListItem{Text=x.UserTypeName,Value=x.UserTypeID.ToString());
在视图中,您必须包括所选项目列表


@Html.DropDownList(“DropDownID”,Model.UserTypesItemList,“请选择”)
希望它对您有所帮助。

在您的视图模型中包含以下代码

IEnumerable<SelectListItem> UserTypesItemList = UserTypes.Select(x => new SelectListItem { Text = x.UserTypeName, Value = x.UserTypeID.ToString() });
IEnumerable UserTypesItemList=UserTypes.Select(x=>newselectListItem{Text=x.UserTypeName,Value=x.UserTypeID.ToString());
在视图中,您必须包括所选项目列表


@Html.DropDownList(“DropDownID”,Model.UserTypesItemList,“Please select”)
希望它能帮助您。

UserType
已经
IEnumerable
在视图中使用
新的选择列表(…)
创建另一个相同的列表是毫无意义的额外开销。它只是
@Html.DropDownListFor(m=>m.UserTypeId,Model.UserType,new{..})
UserType
已经
IEnumerable
在视图中使用
new SelectList(…)
创建另一个相同的,这是毫无意义的额外开销。它只是
@Html.DropDownListFor(m=>m.UserTypeId,Model.UserType,new{..})
没问题。但问题是当我将数据保存到db UserDataType not set并显示错误时@维努塔:我想我应该在conreoller中写代码。但是什么?!!你能发布你的错误信息吗?其中u被停止。在
storeDb.SaveChanges()中已停止。问题不是EF正在调用SaveChanges(),而是在调用SaveChanges时没有更新行。这没问题。但问题是,当我将数据保存到db UserDataType not set并显示错误时@维努塔:我想我应该在conreoller中写代码。但是什么?!!你能发布你的错误信息吗?其中u被停止。在
storeDb.SaveChanges()中已停止。问题不是EF正在调用SaveChanges(),而是在调用SaveChanges时没有更新行。