我有一个奇怪的。我正在尝试使用TextArea助手来渲染标准的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();
}
在第一次加载页面时,它可以正常工作并呈现textarea
Before http://cadred.net/personal/contact-before.png
但是,当我提交表单以测试验证时,它不再呈现textarea
答案 0 :(得分:3)
您获取spark代码而不是测试区域的原因是由于在尝试执行html.textarea相关语句时发生了null引用异常。
按如下方式重写您的视图,您将能够在调试器中查看spark生成的视图代码。
<p>
<label for="Message">Message:</label>
# System.Diagnostics.Debugger.Break();
${ Html.TextArea("IssueText") }
${ Html.ValidationMessage("IssueText", "*") }
</p>
现在你可以F5项目,你应该得到一个对话框,要求在你点击视图时启动调试器,第一次忽略它(点击No)并第二次启动调试器(点击提交后)。该列表应包括您运行项目的VS实例,选择该项并离开。
查找空值,否则在try catch中删除断点,渲染文本区域并在catch处理程序中为它。希望您能获得足够的信息,以确定发生了什么。