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

时间:2017-05-01 08:13:36

标签: 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] [varchar](11) NOT NULL,
[Address] [nvarchar](max) NOT NULL,
[ChargeAccount] [bigint] NULL,

userType字段是UserType表中的ForeignKey,包括(" 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,

FieldType是包含的表(" textbox",...) 现在,我想创建RegisterForm与Insert.Also我有问题获得UserTypeDropDown的选定值。

2。我写了这个ViewModel:

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; }
}

我的问题是如何在VM中设置CustomeFields并检索所选的值并注册CustomeFields。

2 个答案:

答案 0 :(得分:0)

获取下拉值:

您的视图模型中还需要两个属性,您可以将其绑定到下拉列表。

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

在selectlist项目中添加下拉列表的值,如下所示:

var emplyee = new Employee();
var userTypeSelectList = new List<SelectListItem>();
        userTypeSelectList.Add(new SelectListItem() { Text = "ABC", Value = "1" });
        userTypeSelectList.Add(new SelectListItem() { Text = "XYZ", Value = "2" });
        userTypeSelectList.Add(new SelectListItem() { Text = "PQR", Value = "3" });
emplyee.UserTypes = userTypeSelectList;

在类文件中包含以下命名空间:

使用System.Web.Mvc;

现在在视图中添加下拉列表。

@Html.DropDownListFor(model => model.UserTypeId, new SelectList(Model.UserTypes, "Value", "Text"), new { @class = "form-control"})

现在在post方法中,您将获得选择的usertype Id。

答案 1 :(得分:0)

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

IEnumerable<SelectListItem> UserTypesItemList = UserTypes.Select(x => new SelectListItem { Text = x.UserTypeName, Value = x.UserTypeID.ToString() });

并且在视图中您必须包含所选项目列表

@Html.DropDownList("DropDownID", Model.UserTypesItemList, "Please select")希望它可以帮到你。