Определение количества результатов ViewData - PullRequest
0 голосов
/ 25 ноября 2008

Привет, у меня есть представление с несколькими пользовательскими элементами управления, и я передаю ViewData всем из них, я хотел бы знать, как вы определяете количество элементов путем указания строкового ключа. Я понимаю, что вы не можете использовать сравнение с целым числом, потому что ViewData - это объект, но я настроил его таким образом, чтобы объяснить мой вопрос. Я также попытался установить значение NULL, но объект ViewData никогда не имеет значения NULL, даже для результатов, в которых данные не заполнены в ViewData. * 1001 то есть *

На мой взгляд

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

Ответы [ 2 ]

4 голосов
/ 25 ноября 2008

Если я правильно понял ваш вопрос, вы хотите получить счетчик элемента, хранящегося во ViewData. Единственный способ добиться этого - привести его к IEnumerable или IList, а затем вызвать метод Count.

0 голосов
/ 23 декабря 2008

Чтобы ответить на мой собственный вопрос, это путь, который я выбрал для этого. В методе действия моего контроллера я определяю количество на основе количества найденных там записей и устанавливаю для моего ViewData значение null, если оно не соответствует моим требованиям.

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

Теперь, если ничего не получено, он автоматически устанавливает нулевые значения ViewData ["Test"], и на странице просмотра вы можете сделать что-то подобное.

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

Если вы хотите добавить несколько проверок, вы должны добавить их в свой контроллер и сравнить, используя страницу просмотра. Возможно, есть и другие способы сделать это, но я нашел, что это хорошо работает.

...