2016-08-23 4 views
0

HomeController>インデックスアクションは、選択クエリを行います。その選択クエリの各行について、インデックスビューで部分ビューをレンダリングする必要があります。これはデータベースに依存するので、私はコントローラからコードのこの部分をやっています。私はかなりの部分を検索しましたが、コントローラからPartialViewをレンダリングする方法を理解することはできません。レンダリングPartialViewからコントローラ

  1. 部分的な表示にはコントローラの操作が必要ですか?私はこれについて確認されませんでしたが、これは私が作成したものです:私のメインビューで

    public PartialViewResult ucDropdown(Question question) 
    { 
        ViewBag.Question = question; 
        return PartialView(); 
    } 
    
  2. 、私はこの部分図を呼ぶのですか?私は(失敗した)試してみました:

    public ActionResult Index(string id = "") 
    { 
        var q = ...... 
        var ctrls = new ControlsController(); 
        ViewBag.Questions = ctrls.ucDropdown(q); 
        return View(); 
    } 
    
  3. は、どのように私はこの部分図のViewBagにアクセスすることができますか?

答えて

2

部分的な表示を行うには、必ずしもアクションメソッドは必要ありません。メインビューで直接部分ビューを呼び出し、Questionオブジェクトを直接渡すことができます。

メインビューでは、質問をループしてHtml.Partialヘルパーメソッドを使用して部分ビューを呼び出すことができます。

@foreach(var item in (List<Question>)ViewBag.Questions) 
{ 
    @Html.Partial("ucDropdown",item) 
} 

あなたは部分図が~/Views/Sharedディレクトリまたは~/Views/YourControllerFolderNameViewBag.QuestionのいずれかでucDropdown.cshtmlと呼ばれる持っていると仮定は、タイプList<Question>またはIEnumerable<Question>

あなたの部分図ucDropdown.cshtmlが強くQuestion型に型付けされていることを確認しますのです

@model Question 
<p>@Model.QuestionId</p> 

質問オブジェクトdirを渡すのでビュー(強く型付けされたアプローチ)を使用すると、ViewBagは必要ありません。部分ビューでModel.AnyPropertyNameにアクセスするだけです。

関連する問題