2012-06-12 36 views
23

私はリスト<をコントローラアクション内のいくつかのデータにバインドしています。そのリスト<をViewに渡して、Razor ViewでDataGridとバインドします。コントローラからMVC 3のビューにリストを渡す方法

私はMVCを初めて使用しています。どのように渡すか、どのようにViewにアクセスすることができますか。事前に

おかげで、

Balu

答えて

6

あなたがビューにコントローラからのデータを渡すために動的オブジェクトViewBagを使用することができます。

は、あなたのコントローラに以下を追加します。

ViewBag.MyList = myList; 

次に、あなたがあなたの視野からそれをアクセスもできます。ビューにデータを渡す

@ViewBag.MyList 

// e.g. 
@foreach (var item in ViewBag.MyList) { ... } 
+6

これは、データがはい – archil

+0

を表示するために、コントローラから渡された最悪の方法ですが、それはのように簡単ですよく –

+0

私は同意しません。ビューバック付きのマジック文字列は、ビュー(モデル)を返すより簡単ですか? – archil

36

は、メソッドにオブジェクトを渡すように簡単です。 Controller.View Method

protected internal ViewResult View(
    Object model 
) 

でこの

//controller 

List<MyObject> list = new List<MyObject>(); 

return View(list); 


//view 

@model List<MyObject> 

// and property Model is type of List<MyObject> 

@foreach(var item in Model) 
{ 
    <span>@item.Name</span> 
} 
+2

'@ model'ではなく' @ Model'を持っていたときに働いてくれました。 – jonas

+0

コントローラから2つのリストを別々に送信して表示する場合はどうすればよいですか? – Jogi

+0

2つのリストプロパティを持ち、そのクラスのインスタンスを渡すViewModelクラスを作成するよりも、 – archil

3
  1. のようなものを見てみましょうあなたのリストとビューのために必要な他のものが含まれているモデルを作成します。

    を次のように表示アクセスで

    public ActionResult ArticleList(MyModel model) 
    { 
        model._MyList = new List<string>{"item1","item2","item3"}; 
        return PartialView(@"~/Views/Home/MyView.cshtml", model); 
    } 
    
  2. モデル:たとえば

    public class MyModel 
    { 
        public List<string> _MyList { get; set; } 
    } 
    
  3. アクションメソッドからは次のように、モデル、_MyListプロパティにご希望のリストを置きます

    @model MyModel 
    foreach (var item in Model) 
    { 
        <div>@item</div> 
    } 
    

私はそれが始まるのに役立つと思います。

8

私はこれを行いました。コントローラで

ビューで
public ActionResult Index() 
{ 
    var invoices = db.Invoices; 

    var categories = db.Categories.ToList(); 
    ViewData["MyData"] = categories; // Send this list to the view 

    return View(invoices.ToList()); 
} 

@model IEnumerable<abc.Models.Invoice> 

@{ 
    ViewBag.Title = "Invoices"; 
} 

@{ 
    var categories = (List<Category>) ViewData["MyData"]; // Cast the list 
} 

@foreach (var c in @categories) // Print the list 
{ 
    @Html.Label(c.Name); 
} 

<table> 
    ... 
    @foreach (var item in Model) 
    { 
     ... 
    } 
</table> 

はそれが役に立てば幸い

+0

2つの別々のリストをView from Controllerに送りますか? – Jogi

+1

こんにちは@RehanKhan、私は2つの異なる名前で2つのビューデータを作成する必要がありますと思います。 ViewData ["MyList1"]とViewData ["MyList2"]よろしくお願いします。 –

関連する問題