1

こんにちは、いくつかのユーザー コントロールを持つビューがあり、それらすべてに ViewData を渡します。文字列キーを指定して要素数を決定する方法を知りたいです。ViewData はオブジェクトであるため、整数との比較を使用できないことは理解していますが、質問を説明するためにこのように設定しています。私もnullを試しましたが、ViewDataにデータが入力されていない結果であっても、ViewDataオブジェクトは決してnullではありません。いえ

私からしてみれば

    <%if(ViewData["Test"].Values > 0)
      {
    %>
      <%=Html.RenderPartial("~/Views/UC/Test.ascx", ViewData["Test"])%>
   <%
      }
    %>
4

2 に答える 2

5

私があなたの質問を正しく理解していれば、ViewData 内に格納されている要素からカウントを取得する必要があります。これを実現する唯一の方法は、IEnumerable または IList にキャストしてから、Count メソッドを呼び出すことです。

于 2008-11-25T15:31:15.103 に答える
0

私自身の質問に答えるために、これは私がこれを行うために取った道です。私のコントローラーアクションメソッドでは、そこで取得されたレコードの数に基づいてカウントを決定し、要件を満たしていない場合は ViewData を null に設定します。

public ActionResult Test(){
   var test = //your query;
   if(test.Count() > 0 )
   {
       ViewData["Test"] = test;
   }
}

何も取得されない場合、ViewData["Test"] が自動的に null に設定され、ビュー Page で次のようなことができます。

<% if(ViewData["Test"] == null){
      Html.RenderPartial("~/Views/UC/NoRecords.ascx");
   }
   else
   {
      Html.RenderPartial("~/Views/UC/Awesome.ascx");
   }
%>

複数のチェックを追加する場合は、それらをコントローラーに追加し、ビュー ページを使用して比較する必要があります。これを行うにはおそらく他の方法がありますが、これがうまく機能することがわかりました。

于 2008-12-23T15:00:16.990 に答える