2016-12-14 6 views
0

私はMVCの初心者ですが(C#ではありません)、プロジェクトはEntity Frameworkを使用してVisual Studio .NETアプリケーション(MVCまたはWPF)で作成する必要があります。MVCコンボボックスとデータベースに保存する方法は?


私はID、タイトル、名前、ミドルネーム、姓、住所、CountryId(テーブルの国[ID、名前]と1対多の関係を持っています)、アクティブ(ビット、真/偽、チェックボックス)

テーブルの国における
ID、名前(事前に定義された)

別のテーブルタイトル(私はdropdownlistsをハードコーディングできなかったので、私は、作った)
同上、TitleName

私の質問はコントローラ+ビューを作成したときにタイトルがテキストボックス(別名@ Html.Editor(...))に変更されたときです。@Html.DropDownList("nameHere", null, new { htmlAttributes = new { @class = "form-control" } })

次に私のドロップダウンビューを作成しますリスト:

public ActionResult Create() 
     { 
      ViewBag.nameHere = new SelectList(db.Titles, "Id", "TitleName"); 
      ViewBag.CountryId = new SelectList(db.Countries, "Id", "Name"); 
      return View(); 
     } 

はその後、私のPOSTに私もそれを置く:

[HttpPost] 
     [ValidateAntiForgeryToken] 
     public ActionResult Create([Bind(Include = "Id,Title,Name,MiddleName,Surname,Address,CountryId,Active")] Customer customer) 
     { 
      if (ModelState.IsValid) 
      { 
       db.Customers.Add(customer); 
       db.SaveChanges(); 
       return RedirectToAction("Index"); 
      } 
      ViewBag.nameHere = new SelectList(db.Titles, "Id", "TitleName", db.Title); //selects from table Titles the Id and TitleName for the field Title in Customers table? at least that's how I interpretate it 
      ViewBag.CountryId = new SelectList(db.Countries, "Id", "Name", customer.CountryId); //same for Country 
      return View(customer); 
     } 

しかし、私は3つの問題を抱えて:

第一1 - db.Customers NでのタイトルのためのサーバーリターンをULL値
2番目 - ドロップダウンを使用しない場合、TextBoxフィールドから値を送信します。ただし、ユーザーは任意の値を書くことができます。
3番目(ViewBagとViewDataを使用している場合) - ViewDataアイテムはありませんキー "nameHere"を持つタイプ 'IEnumerable'

私は4つのオプションがある単純なドロップダウンリストが必要です - Ms、Mrs、Mr、Missそして選択してフルフォームをサーバーに送信すると名前、ミドルネーム、姓など)をドロップダウンリストから保存するには、Customersテーブルを使用します。これ以上何もない。

私はいくつかのOOPと答えを思い付くために管理データベースまず(別名ではないの周り、モデル、その後DBを作成する)

+0

質問ごとに1つの質問をお願いします。 –

+0

ビュー内のドロップダウンリストオプションを作成する方法を質問しています(「Mr.」と表示されます)。文字列)。これはヌル値を送信します! –

+0

どのようにポストアクションでそれを読んでいる、特定のコードを表示 –

答えて

0

と私のDBを作った:ビュー内

Inside the controller(GET method): 
List<string> ListItems = new List<string>(); 
      ListItems.Add("Ms."); 
      ListItems.Add("Mrs."); 
      ListItems.Add("Mr."); 
      ListItems.Add("Miss"); 
      SelectList Titles = new SelectList(ListItems); 
      ViewData["Titles"] = Titles; 

<div class="form-group"> 
      @Html.LabelFor(model => model.Title, htmlAttributes: new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       @Html.DropDownList("Title", ViewData["Titles"] as SelectList, new { @class = "form-control" }) 
       @Html.ValidationMessageFor(model => model.Title, "", new { @class = "text-danger" }) 
      </div> 
     </div> 
関連する問題