2011-09-17 16 views
2

MVC 3と大量ORMを使用しています。Massive ORMを使用してドロップダウンリストを作成しますか?

データベースからデータを取得するためにMassive ORMを使用してドロップダウンリストをどのように設定できるのでしょうか。

ViewData ["Categoreis"]を使用して私のビューにカテゴリのリストを渡します。これは、ビューにデータを渡すが、私は私のブラウザでページをロードしようとすると、私はこれにErrorMessageを得る:

は、データバインディング:「System.Dynamic.ExpandoObjectは」名前「区分と プロパティが含まれていません'

これは私のドロップダウンリストがどのように見えるかです:

@Html.DropDownListFor(model => model.CategoryID, new SelectList(ViewData["Categories"] as IEnumerable<dynamic>, "CategoryID", "Name"), "--Category--") 

誰も私の問題の解決策を持っていますか?

+0

あなたのドメインモデルはそれまたはモデルを持っていることを確認することができます:ここで

は、メソッドのシグネチャでありますあなたが渡しているのは、上記のプロパティが含まれています – Rafay

+0

私は使用している私のモデルでCategoryIDを持っています。私は動的にドロップダウンリストを埋めます。私がどのように動作するのかをデバッグモードに従えば、データベースからCategoryIDとNameが得られます。私はちょうど私の選択リストの値とテキストフィールドにCategoryIDと名前をリンクする方法を知りません。 – Raskolnikoov

+0

多分このリンクが役立ちますhttp://stackoverflow.com/questions/4740969/how-to-databind-a-gridview-to-an-expandoobject/5145419#5145419 – Rafay

答えて

3

たとえば、次のビューモデルを定義します私は現時点でマッシブを使用しています。ここで私は国がデータベース内のテーブルからドロップダウン埋めてきた方法は次のとおりです。

これは私のコントローラである:

DetailsModel model = new DetailsModel(); 
var _countries = new Countries(); //Massive class 
model.Countries = _countries.All().Select(x => new SelectListItem { Value = x.Id.ToString(), Text = x.Name }); 

ここに私のDetailsModel

public IEnumerable<SelectListItem> Countries { get; set; } 

内にあるCountriesプロパティがあります私の見解では:

私にとっては魅力的です。

0

私は[「Categoreis」]のViewDataを使用して私の見解カテゴリの私のリストを渡す

私がモデルを使用することをお勧めいたしますとViewDataを/ ViewBag忘れるでしょう。モデルを投入し、ビューに渡す

public class MyViewModel 
{ 
    public int CategoryID { get; set; } 
    public SelectList Categories { get; set; } 
} 

とコントローラで:あなたの強く型付けされたビューで

public ActionResult Index() 
{ 
    var categories = _repository.GetCategories(); 
    var model = new MyViewModel 
    { 
     // this assumes that categories is an IEnumerable<T> 
     // where T is some domain model having CategoryID and Name properties 
     Categories = new SelectList(categories, "CategoryID", "Name") 
    }; 
    return View(model); 
} 

し、最終的に:

@model MyViewModel 
@Html.DropDownListFor(x => x.CategoryID, Model.Categories, "--Category--") 
+0

私のために同じエラーメッセージがありません。 :/ – Raskolnikoov

+0

@ Raskolnikoov、アプリケーションからすべてのViewBagを削除しましたか?そして私がすべてを言うとき、私はすべてを意味し、どこからでも。 –

+0

はいビューデータ/ビューバックはありません。 – Raskolnikoov

1

私は、この目的のためにKeyValuesというMassiveメソッドがあるようです。現在はline 360 in the source codeです。 Expandoではなく辞書を返します。私はExpandoをコードのどこかで引き続き使用することを前提としています。 、私はエラーメッセージが言うように、あなたが渡しているモデルは、プロパティ `CategoryID`が含まれていないと思われる

/// This will return a string/object dictionary for dropdowns etc 
public virtual IDictionary<string, object> KeyValues(string orderBy = "") {...} 
関連する問題