2008-11-25 2 views
0

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

т.е.

На мой взгляд

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

Что вы назначаете ViewData ["Test"] в своем контроллере? – 2008-11-25 17:29:37

ответ

4

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

0

Чтобы ответить на мой собственный вопрос, это путь, который я предпринял для этого. В моем методе действия контроллера я определяю счет, основанный на количестве найденных записей, и устанавливаю, что мой 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"); 
    } 
%> 

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