[asp.net-mvc]火花视图引擎 Html.TextArea Bug?

标签: Asp.net-MVC HTML C#
发布时间: 2017/3/25 4:18:20
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有一个怪异的一个。我试图呈现出简单地使用 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:

你得到火花代码而不测试区域,原因是 null 引用异常发生时它正在执行 html.textarea 相关语句。

返工您的视图,如下所示,您将能够进入由火花在调试器中生成的视图代码。

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

现在你可以 F5 项目,你应该得到一个对话框,询问要启动调试器,你命中的视图时,忽略它第一次 (命中 No) 并启动调试器 (在你点击提交) 之后第二次。 列表中应该包括你跑的项目从 VS 实例,选择,和你走。

看空值否则为滴断点在 try-catch 呈现文本区域和为它的 catch 处理程序。 希望您将获得足够的信息以使您能够确定发生了什么事。

官方微信
官方QQ群
31647020