午後の人々を、表示され、いくつかのフィールドとドロップダウンボックスで簡単なフォームを持っています。私はエンティティフレームワークにCRUDメソッドを使用し、システムで新しいレコードを正常に表示および作成できます。MVCドロップダウンオプションは、デバッグモードで「NULL」としてMVC 5とC#に</p> <p>イム新しい
唯一の問題は、エンティティフレームワークにリンクしてこれらのタイトルをリストに挿入する 'タイトル'ドロップダウンがあることです。 Webページを読み込むと、ドロップダウンリストで使用できるタイトルが表示されますが、フォームを送信すると、[タイトル]フィールドを除くすべての値がデータベースに送信されます。
私のプログラムをデバッグすると、このフィールドは選択したものに関係なくnullを表示します。
私は以下のチュートリアルに従ってこの作業を行い、ネットを見渡しましたが、解決策を見つけるのに苦労しました。
は、私は私のモデルでは、「タイトル」や他の名前の「クライアントレコード」という名前の1で2つのテーブルを持っています。私はデータベースの最初のアプローチを使用して、私は一つにこれら2つのデータベース・モデルを組み合わせている最初のコードされていないとして
:
namespace EDT_Test.Models.ViewModels
{
public partial class Marie_Testing
{
[Display(Name = "Client Ref:")]
public int id { get; set; }
[Display(Name = "Created By:")]
public string CreatedBy { get; set; }
public List<Title> allTitles { get; set; }
[Required]
[Display(Name = "Surname:")]
public string Surname { get; set; }
[Display(Name = "Additional Surname:")]
public string Surname2 { get; set; }
[Required]
[Display(Name = "Forename:")]
public string Forename1 { get; set; }
[Display(Name = "Additional Forename:")]
public string Forename2 { get; set; }
生成Entity Frameworkのモデルは次のようになります。
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated from a template.
//
// Manual changes to this file may cause unexpected behavior in your application.
// Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace EDT_Test.Models
{
using System;
using System.Collections.Generic;
public partial class ClientRecord
{
public int id { get; set; }
public string CreatedBy { get; set; }
public string Title { get; set; }
public string Surname { get; set; }
public string Surname2 { get; set; }
public string Forename1 { get; set; }
public string Forename2 { get; set; }
}
}
自動的に作成されたモデルとMarie_Testingモデルの間のタイトルフィールドの唯一の違いは、タイトルフィールドを文字列からリストアイテムに変更したことです。
<div class="form-group">
@Html.LabelFor(model => model.allTitles, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
<select id="titleid" name="titlename" class="form-control">
@foreach (var item in Model.allTitles)
{
<option value="@item.id">@item.Title1</option>
}
</select>
</div>
</div>
のための私のコード:
私Create.cshtmlは、この(私のMarie_Testingという名前のモデルではなく、エンティティフレームワークで作成され、自動生成されたものにリンクのように見えるタイトルドロップダウンのためのdiv要素を保持していますClientRecordsControllerは次のとおりです。
// GET: ClientRecords/Create
public ActionResult Create()
{
////set the defaults (dropdown) of the page for the ceaton of a new record.
Marie_Testing vmPopulateData = new Marie_Testing();
List<Title> titles = (from t in db.Titles select t).ToList();
//List<Title> titles = Title.Select(t => new{t.id, t.Title}.ToString.ToList());
vmPopulateData.allTitles = titles;
return View(vmPopulateData);
}
// POST: ClientRecords/Create
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "id,CreatedBy,Title,Surname,Surname2,Forename1,Forename2")] ClientRecord clientRecord)
{
if (ModelState.IsValid)
{
db.ClientRecords.Add(clientRecord);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(clientRecord);
}
私は、Webページのドロップダウンリストを表示することができますが、選択された値を取得し、データベースにこれを投稿することができないようどのように理解していないとして、すべてのヘルプははるかに高く評価されて
。よろしく ベティB
を使用することを好みます –