Привет, у меня есть представление с несколькими пользовательскими элементами управления, и я передаю ViewData всем из них, я хотел бы знать, как вы определяете количество элементов, указав строковый ключ. Я понимаю, что вы не можете использовать сравнение с целым числом, потому что ViewData является объектом, но я настроил его таким образом, чтобы объяснить свой вопрос. Я также пробовал значение null, но объект ViewData никогда не имеет значения null, даже для результатов, в которых данные не заполнены в ViewData. Т.е.
На мой взгляд
<%if (ViewData["Test"].Values > 0)
{
%>
<%=Html.RenderPartial("~/Views/UC/Test.ascx", ViewData["Test"])%>
<%
}
%>
запрос linq to sql, в большинстве случаев динамический.





Если я правильно понял ваш вопрос, вы хотите получить счет для элемента, хранящегося внутри ViewData. Единственный способ добиться этого - привести его к IEnumerable или IList, а затем вызвать метод Count.
Чтобы ответить на мой собственный вопрос, я пошел по этому пути. В моем методе действия контроллера я определяю счетчик на основе количества полученных там записей и устанавливаю для своих ViewData значение null, если оно не соответствует моим требованиям.
public ActionResult Test(){
var test = //your query;
if (test.Count() > 0 )
{
ViewData["Test"] = test;
}
}
Теперь, если ничего не получено, он автоматически устанавливает для ViewData ["Test"] значение null, и на вашей странице просмотра вы можете сделать что-то вроде этого.
<% if (ViewData["Test"] == null){
Html.RenderPartial("~/Views/UC/NoRecords.ascx");
}
else
{
Html.RenderPartial("~/Views/UC/Awesome.ascx");
}
%>
Если вы хотите добавить несколько проверок, вы должны добавить их в свой контроллер и сравнить, используя страницу просмотра. Возможно, есть и другие способы сделать это, но я обнаружил, что это хорошо работает.
Что вы назначаете ViewData ["Test"] в вашем контроллере?