2017-01-12 19 views
0

MVCのビューからコントローラにリストを送信する際に問題があります。ビューからコントローラにリストを送信する際の問題MVC

これは、ビューのコードです:

foreach (var c in ViewBag.Categories) 
{ 
    <a href="@Url.Action("SubCategory", "Product", new { selected = selected, id = @c.Item.ID, category = @c.Item.Name })" id="link" class="list-group-item"> 
    <span> @c.Item.Name</span> 
    </a> 
// { TempData["Childrens"] = c.Children; } 

}

あなたは添付のスクリーンショットで見ることができるようViewBag.Categoriesは、各項目の子供のリストが含まれています: enter image description here

これはコントローラ内のコードです:

public ActionResult SubCategory(string selected, int id, string category) 
{ 
     var childrens = TempData["Childrens"] as IEnumerable<Helpers.TreeItem<Categories>>; 
     var listOfChildrens = childrens.ToList(); 

    } 
public ActionResult SubCategory(string selected, int id, string category, **childrens**) 
{ 

あなたはどのようにこれを達成するために私にアドバイスをしてくださいすることができ:は、私はこのようなこと子供のActionResultパラメータリスト内のリスト、何かが必要? ありがとうございます!

+0

なぜあなたはコントローラーでTempDataをを使用しないと、ビューにあなたがViewBagを使用していますか? –

+0

TempDataはテストのためのものだった – Orsi

+0

これは、選択したID、カテゴリ、カテゴライズリストを含む** viewmodel **を作成せず、ビューバッグを使用せずに表示するようにしました。 – Curiousdev

答えて

0

モデルにフォームから必要なものを追加してこのモデルを送信し、と提出するときにHidden fieldsと表示されるように、Childrensを表示する必要があります。

public Class MyModel { 
    public string selected {get;set;} 
    public int id {get;set;} 
    public string category {get;set;} 
    public List<Children> childrens {get;set;} 
} 



for (int i= 0; i< Model.Categories.Count; i++) 
{ 
    .... 
    @Html.HiddenFor(x=> Model.childrens[i].Yourproperty1) 
    @Html.HiddenFor(x=> Model.childrens[i].Yourproperty2) 
    .... 
} 

あなたはモデルを作成し、Viewbag、まだ可能性を扱う維持する必要はありませんが、あなたはあなたがしたくない場合はHiddenFiledsと同じnameで子供から必要なすべてのプロパティをコントローラに渡す必要がある場合あなたのフォームにそれを表示する

あなたのビジネスと のプロパティに応じてこのコードを変更する必要がありますが、私のアイデアを提示するためです。

http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx/

+0

あなたが提案したように私はビューモデルを作った、そして今私はビューにリストを渡している。もう1つの質問で助言してもらえますか?隠れたフィールドをコントローラに送る最善の方法は何でしょうか? – Orsi

+1

@Orsiこれらのフィールドをフォームに追加してフォームを送信すると、コントローラー に送信されます。 'public ActionResult SubCategory(MyModel model)' –

+0

私は新しい回答を私の質問に追加しました – Orsi

関連する問題