2017-05-01 18 views
1

asp.netMvcでDatabaseFirstを使用しました。私は1つのビューに複数のテーブルを使用し、データベースに登録しています。ViewModelを2つのテーブルと2つのテーブルのビューデータに使用する方法

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( "管理者"、 "ユーザー"、...) であると私は別のテーブルを持っています、カスタマーのフィールドを持つ:FIELDTYPEは今(「テキストボックス」、...) を含めるテーブルがある

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, 

、私はUserTypeDroのためのSelectedValueのを取得する問題を抱えているInsert.AlsoにしてRegisterFormを作成したいですpDown。

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

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メソッドで、選択したユーザータイプIDが表示されます。

+0

'UserType'はすでに' IEnumerable 'です。ビュー内で' new SelectList(...) 'を使って別のものを作成するのは無意味な余分なオーバーヘッドです。そのちょうど '@Html.DropDownListFor(m => m.UserTypeId、Model.UserType、新しい{..})' –

0

ビューモデルには、次のコードが含まれています。

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

とビューで、あなたは

@Html.DropDownList("DropDownID", Model.UserTypesItemList, "Please select")はそれがあなたのお役に立てば幸い選択した項目のリストを含める必要があります。

+0

それはOk.butの問題です、私はdbにデータを保存するUserDataTypeが設定されていないとエラーを表示する!@vinutha -N – Mohadeseh

+0

私はconreoller.vutでコードを書くことをミュートすると思います? – Mohadeseh

+0

エラーメッセージを投稿できますか?あなたはどこで停止しますか? 'storeDb.SaveChanges();'の –

関連する問題