2017-12-08 10 views
2

c#/ asp.net/mvcの初心者として、ビュー内のHtml.DropDownListからオブジェクトを取得する方法が見つかりません。リストからオブジェクトを取得する方法<typeObject> DropDownlistFor?

public ActionResult Index() { 
    MyViewModel mvm=new MyViewModel(); 
    mvm.ListOfSomething=(my code to populate the List); 
    return View(vm); 
} 

ビューはここにある:私はコントローラに私のリスト<>を移入

public class Something { 
    public int Id {get;set;} 
    public string Name {get;set;} 
    public int AnotherProperty {get;set;} 
} 

public class MyViewModel { 
    public List<Something> ListOfSomething {get;set;} // A list of Somethings 
    public Something TheSomethingToGet {get;set;} // The object I want to get 
} 

"何か" オブジェクトとは、例えば次のとおりです。 はここに私のViewModelです:

@model Project.ViewModels.MyViewModel 
@Html.LabelFor(m => m.ListOfSomething) 
@Html.DropDownListFor(m => m.ListOfSomething, new SelectList(Model.ListOfSomething, "id", "name"), "-")<br/> 

そして最終的には、[HttpPost]コントローラのインデックス:

[HttpPost] 
public ActionResult Index(MyViewModel mvm) { 
    /* Here, how could I get the "Something" object that 
     was selected in the dropdownlist and can be identified 
     by the "id" property ? 
    */ 

} 

私は完全に間違っていますか?あなたが何をする必要があるか

+0

'mvm.ListOfSomething.Where(o => o.Id == DropDownList.Selected.ID)'のようなものですが、dropdownlist.selected.idの部分はわかりません。 – hellyale

答えて

0

intためのプリミティブ型とDropDownListFor作品私の理解によると おかげで、stringは、ViewModelににSelectedId性質を持っていることを掲示し、コントローラにIdはあなたが引っ張っしなければならないこと使用していますコントローラのビューモデル内のコレクションから選択した項目。

あなたは好きなことを試すことができます。

public class MyViewModel { 
    public List<Something> ListOfSomething {get;set;} // A list of Somethings 
    public int SelectedItem {get;set;} 
} 

、今、あなたのビューで、あなたは何をする必要があります:

@Html.DropDownListFor(m => m.SelectedItem, new SelectList(Model.ListOfSomething, "id", "name"), "-") 

、その後、あなたのアクションメソッドに:

[HttpPost] 
public ActionResult Index(MyViewModel mvm) { 
    // use mvm.SelectedItem id to get the selected complete object from repository 
} 

うまくいけば助けになると思う。

0

OK、コントローラーがSomethingオブジェクトをインスタンス化できないことを理解しました。リストの適切なレコードまたはアイテムを見つけて使用するのはidを使用するのが私の仕事です。ありがとう

関連する問題