我正在创建自定义帮助器来呈现标签,相应的文本框,验证帮助器和周围的li元素。
当我想要包含验证消息时,我得到一个例外:
System.NullReferenceException:Object 引用未设置为的实例 对象
并且发现代码失败了:htmlHelper.ValidationMessageFor(expression).ToString();
我的问题:
public static string MooseTextBoxLineFor<TModel,
TProperty&gt;(这个HtmlHelper htmlHelper,Expression&gt;表达) {
TagBuilder liBuilder = new TagBuilder("li"); liBuilder.AddCssClass("TextBox"); liBuilder.InnerHtml = htmlHelper.LabelFor(expression).ToString() + htmlHelper.EditorFor(expression).ToString() + htmlHelper.ValidationMessageFor(expression).ToString(); return liBuilder.ToString(); }
答案 0 :(得分:3)
如果没有验证消息,那么帮助器将返回null,您在null上调用ToString(),这就是您收到此错误的原因。
就我个人而言,我会使用MVC中的EditorTemplates系统来做这件事,但是如果你更喜欢这样做,我会这样做:
var Label = htmlHelper.LabelFor(expression);
var Editor = htmlHelper.EditorFor(expression);
var Validation = htmlHelper.ValidationMessageFor(expression);
liBuilder.InnerHtml = (Label == null ? "" : Label.ToString())
+ (Editor == null ? "" : Editor.ToString())
+ (Validation == null ? "" : Validation.ToString());