Как отметил @FelixKling, наиболее вероятным сценарием является то, что узлы, которые вы ищете, еще не существуют.
Однако современные методы разработки часто могут манипулировать элементами документа за пределами дерева документов либо с DocumentFragments, либо просто отсоединением / повторным подключением текущих элементов напрямую. Такие методы могут использоваться как часть шаблонов JavaScript или для предотвращения чрезмерных операций перерисовки / переплавки, в то время как элементы, о которых идет речь, сильно изменяются.
Аналогично, новая функциональность «Теневой DOM» развертывается в современных браузерах позволяет элементам быть частью документа, но не обрабатываться запросом document.getElementById и всеми его методами sibling (querySelector и т. д.). Это делается для инкапсуляции функциональных возможностей и, в частности, скрыть его.
Опять же, скорее всего, элемент, который вы ищете, просто (пока) в документе, и вы должны сделать, как предлагает Феликс , Тем не менее, вы также должны знать, что это все чаще является не единственной причиной того, что элемент может быть необоснованным (временно или постоянно).
Вы могли бы хотеть смотреть на последнее сообщение ScottGu для ASP.NET предыдущие 5. Это идет посредством образца проверки, который очень интересен:
Вот обзор потока в MVC:
Платформы проверки будут способствовать Вам в этом процессе. Кроме того, я думаю, что команда MVC ASP.NET планирует платформу проверки следующий предварительный просмотр.
Вы смотрели на это? http://www.codeplex.com/MvcValidatorToolkit
Заключенный в кавычки из страницы
Инструментарий Блока проверки допустимости обеспечивает ряд блоков проверки допустимости для нового ASP.NET платформа MVC для проверки HTML-форм на клиенте и серверной стороне с помощью наборов проверки.
Я боюсь, что кто-то более MVC-опытный, чем я должен был бы говорить туда, где в архитектуре необходимо поместить вещи.
Я просто изучаю платформу MVC также, таким образом, я не уверен, как от этого, но от того, что я понимаю, что у Вас была бы форма на Представлении, таком как Edit.aspx. Эта форма затем отправила бы на контроллер к другому методу действия, такому как Обновление () передающий в содержании формы, которую Вы устанавливаете в Edit.aspx как параметры.
Update(int id, string name, string foo)
Вы могли сделать проверку в рамках того метода. Если все в порядке,
return View("Item", yourObject)
Насколько я могу сказать, что все все еще пытаются выяснить "стандартный" способ сделать его. Это сказало, определенно проверяют Phil Haack и последние сообщения Scott Guthrie на MVC, и Вы найдете некоторую интересную информацию о том, как они сделали. Когда я просто играл вокруг с ним для меня, я создал ModelBinder для класса данных LinqToSql, который я генерировал. Можно проверить это сообщение, чтобы узнать, как соединить основной ModelBinder:
ASP.NET редактор связей модели MVC
В Вашем действии при создании "продукта" ModelBinder, Вы просто объявили бы действие как так:
общедоступный Новый ActionResult (напоминание продукта)
И образцовый редактор связей будет заботиться о присвоении отправленных данных к свойствам объектов, пока Вы создали его право так или иначе.
После этого в Вашем GetValue () метод можно реализовать любую проверку, которую Вы хотите, ли с помощью исключения, regex's, или независимо от того, что можно позвонить как:
(ModelStateDictionary_name).AddModelError ("form_element_id", "entered_value", "error_message");
Затем можно просто бросить <% = HTML. ValidationSummary () %> в Вашем представлении для отображения всех ошибок.
Для клиентской проверки я просто использовал jQuery. После подъема основного демонстрационного набора, хотя можно начать делать некоторые интересные вещи, комбинирующие все, что с Частичными Представлениями и Ajax звонит.
Существует Замок. Компоненты. Модуль блока проверки допустимости в проекте Замка. Это является очень гибким и мощным. Это генерирует правила проверки на основе образцовых атрибутов (или любой другой источник) и даже способный генерировать проверку JS с помощью jQuery, Опытной Проверки, fValidate и другого. Конечно, это мудро к абстрактному блоку проверки допустимости далеко позади интерфейса IValidationEngine.