2009-10-05 3 views
3

У меня странный. Я пытаюсь сделать из стандартного просто текстовое поле с помощью помощника TextArea:Spark View Engine Html.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(); 
     } 

И при первой загрузке страницы она работает просто отлично и делает текстовое поле

не

Before http://cadred.net/personal/contact-before.png

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

текстовое поле

After http://cadred.net/personal/contact-after.png

+0

Я представлю это списку рассылки spark-dev. –

+0

Хорошее предложение. –

ответ

3

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

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

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

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

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

+0

Я действительно получаю исключение для исключения ссылок, однако я не могу найти то, что null? На меня ничего не выпрыгивает. Это код, который его генерирует: Output.Write (Html.TextArea («Сообщение»)); Ни «Выход», ни «Html» не имеют значения. –

+0

Как я могу сказать, это происходит только в случае ошибки проверки для этого поля. Если я отключу проверку для этого конкретного поля, он не сломается. –

+0

Шаг в вызов Html.TextArea («Сообщение»), NRE будет сгенерирован где-то там. – Neal