Spark View Engine Html.TextArea Ошибка? - PullRequest
3 голосов
/ 05 октября 2009

У меня странный. Я пытаюсь отобразить стандартное текстовое поле просто с помощью помощника TextArea:

    <p>
        <label for="Message">Message:</label>
        ${ Html.TextArea("IssueText") }
        ${ Html.ValidationMessage("IssueText", "*") }
    </p>

И мой контроллер

   public ActionResult Contact() {
            return View();
    }
  [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Contact(FormCollection form) {
            Seller user = _session.AuthenticatedSeller;
            ServiceTicket ticket = new ServiceTicket(user, form["IssueText"],
               form["ContactReason"]);
            if (ticket.IsValid) {
                _servicetTicketRepository.Add(ticket);
                _servicetTicketRepository.Commit();
                return RedirectToAction("Index", "MyPlace");
            }

            ModelState.AddModelErrors(ticket.GetRuleViolations());
            return View();
        }

И при первой загрузке страницы все работает нормально и отображает текстовую область

До http://cadred.net/personal/contact-before.png

Однако, когда я отправляю форму для проверки правильности, она больше не отображает текстовую область

После http://cadred.net/personal/contact-after.png

1 Ответ

3 голосов
/ 11 октября 2009

Причина, по которой вы получаете искровой код вместо тестовой области, связана с исключением null ref, возникающим при попытке выполнить операторы, связанные с html.textarea.

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

<p>
  <label for="Message">Message:</label>
# System.Diagnostics.Debugger.Break();
  ${ Html.TextArea("IssueText") }
  ${ Html.ValidationMessage("IssueText", "*") }
</p>

Теперь вы можете выполнить проект F5, и у вас должно появиться диалоговое окно с просьбой запустить отладчик при нажатии на представление, игнорировать его в первый раз (нажать «Нет») и запустить отладчик во второй раз (после нажатия «Отправить»). Список должен включать экземпляр VS, из которого вы запустили проект, выберите его, и все готово.

Ищите значения NULL, в противном случае отбрасывайте точки останова в try catch, который отображает текстовую область, и в обработчике catch для нее. Надеюсь, вы получите достаточно информации, чтобы определить, что происходит.

...