0
public ActionResult Index()
    {
        List<pInfo> pobj = new List<pInfo>();
        pobj = (from pid in db.pInfoes
                orderby pid.pId  descending
                select pid).ToList();
        return View(pobj);

    }


public ActionResult toprank() ///partial view 
    {
        List<pInfo> pobj = new List<pInfo>();
        pobj = (from pid in db.pInfoes.Where(c => c.DateCreated < DateTime.Now)
                orderby pid.Score descending
                select pid).Take(3).ToList();
        return PartialView("toprank", pobj);
    }

 \\\ Index.csHtml
  @model IEnumerable<TestProj.pInfo>
  <table>
 <tr>
 <td>
 @foreach (var item in Model)
 {
 <table>
    <tr>
        <td>
            <iframe width="560" 
            height="300" 
            src="@item.pUrl"
             frameborder="0"></iframe>    
        </td>
    </tr>
</table>
}
</td>
<td>
@{Html.RenderPartial("toprank", model);}
</td>
</tr>
</table>

同じモデル、つまり pInfo に対して異なる結果セットを渡しています。ホームコントローラーの部分ビューとインデックスアクションの結果。インデックス ビュー ページで部分ビューをレンダリングしようとすると、テーブルで 1 回、@{Html.RenderPartial("toprank", model); で 2 回、インデックス アクションの結果から同じ結果セットを取得しています。 ...部分ビューがどのように機能するかについての基本的な理解が欠けていると確信していますが、過去3時間は理解できません。URL を部分ビュー (home/toprank) に変更すると、必要な結果セットが得られますが、Home/Index ページには表示されません。

私の設計コンセプトが間違っているかどうか教えてください..これはおそらくこれを機能させるための間違ったアプローチだと感じ始めています..

4

1 に答える 1

2

呼び出された toprank() を見たい場合は、部分的ではなく Html.Action を使用する必要があります。ビューを次のように変更します。

<td>
  @Html.Action("toprank")
</td>
于 2013-04-27T18:32:50.977 に答える