2017-12-30 33 views
2

私はタイトルで正しくしようとしていることをどのように要約するのか分かりません!基本的に私はEF6でコントローラを作成しました.Clientテーブルの1つの外部キーは、MJTopicsテーブルにリンクするMJTopicsIDです。これは26トピックのテーブルです。追加と編集のビューでは、MJTopicsIDをドロップダウンメニューにして、利用可能なすべてのトピックを表示したいのですが、それを選択して追加または編集するとMJTopicsID外部キー番号としてClientテーブルに追加されます。どのように私はこれについて行くので私はすべての私の意見にそれを適用することができます。.NET異なるデータベース変数を表示しますが、IDとして保存しますか?

これは編集ビューで作成したドロップダウンメニューですが、数値1-26が表示されます。トピック変数に変更すると、オープンモデルではないことが分かります。ありがとうございます!

<div class="form-group"> 
    @Html.LabelFor(model => model.MJTopicsID, "MJTopicsID", htmlAttributes: new { @class = "control-label col-md-2" }) 
    <div class="col-md-10"> 
    @Html.DropDownList("MJTopicsID", null, htmlAttributes: new { @class = "form-control" }) 
      @Html.ValidationMessageFor(model => model.MJTopicsID, "", new { @class = "text-danger" }) 
     </div> 
    </div> 
+0

おそらく、SelectListItemではなく、文字列やintなどの単純なプリミティブのリストを指定したことがあります。 https://docs.microsoft.com/en-us/aspnet/mvc/overview/older-versions/working-with-the-dropdownlist-box-and-jquery/using-the-dropdownlist-helper-with-aspnetを参照してください。 -mvc? –

+0

あなたの質問は何か分かりません!選択した外部キ​​ーを表示する適切な方法を探しているのですか、アイテムをリンクするためのバックエンドコードについて質問していますか? –

+0

ドロップダウンに値を設定すると、リスト内の各項目に異なるテキストと値を設定できるため、トピックのテキストを表示して対応する数値を保存するのは簡単です。それはすべて正しい結束をすることです。 – derloopkat

答えて

3

私が正しく理解している場合、あなたは、いくつかの読み値を表示し、この場合、外国人のキーIDのようないくつかのデシベル特定の値を保存したいです。あなたはこのようなあなたのオプションのリストとして種類のIEnumerableタイプの2番目のパラメータを与えることができるヘルパーメソッドのためのビュー「のDropDownList」で

View: 


@Html.DropDownList("MJTopicsID", 
    (List<SelectListItem>)@ViewBag.MJTopics, 
     htmlAttributes: new { @class = "form-control" }) 



Action: 


public ActionResult Index() 
    { 
     ViewBag.MJTopics = new List<SelectListItem>() { 
      new SelectListItem(){Text = "Topic1", Value ="1" }, 
      new SelectListItem(){Text = "Topic2", Value ="2" } 
     }; 
     return View(); 
    } 

SelectListItemはあなたのモデルにマッピングすることができる2つのプロパティがあります。 また、表示する値として「テキスト」、使用する値として「値」を使用してモデルを使用することもできます。

は「トピック」はトピックのためのあなたのリストのモデルでありましょう あなたはこれがそれを行うための一つの方法です

topics.Select(
      x=> new SelectListItem() 
       { 
       Text = x.Id, 
       value =x.Desc 
       }) 

としてそれを書くことができます。

私はあなたの問題を解決することを願っています。

0

誰かがEF6を初めて使っていて、同じことをしようとしている場合は、回答を追加したいと思っていました。

は、あなたが私の場合には、それは、これが地雷だったviewbag変数を作成します作成して、これをやろうとしているのActionResultのためのコントローラでは:

ViewBag.MJTopicsID = new SelectList(db.MJTopicss, "ID", "topicalTF"); 

ViewBag.MJTopicsID = new SelectList(db.MJTopicss, "ID", "ID"); 

私はそれを変更しました

topicalTFは利用可能なトピックの変数で、これはすべてのトピックを示しましたが、IDとして保存します。これが役立ちますように!

関連する問題