自定义帮助器中的验证,空引用

时间:2011-04-07 08:38:47

标签: c# asp.net-mvc-2 html-helper

我正在创建自定义帮助器来呈现标签,相应的文本框,验证帮助器和周围的li元素。

当我想要包含验证消息时,我得到一个例外:

  

System.NullReferenceException:Object   引用未设置为的实例   对象

并且发现代码失败了:htmlHelper.ValidationMessageFor(expression).ToString();

我的问题:

  1. 如何具体找出哪个对象为空?
  2. 有更好的方法吗?
  3. 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();
    }
    

1 个答案:

答案 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());
相关问题