Проверка в пользовательском помощнике, нулевая ссылка - PullRequest
1 голос
/ 07 апреля 2011

Я создаю пользовательский помощник для отображения метки, соответствующего текстового поля, помощника проверки и окружающего элемента li.

когда я хочу включить сообщение проверки, я получаю исключение:

System.NullReferenceException: объект ссылка не установлена ​​на экземпляр объект.

и обнаружили, что в этом коде произошел сбой: htmlHelper.ValidationMessageFor (expression) .ToString ();

Мои вопросы:

  1. Как я могу узнать, какой именно объект является нулевым?
  2. Есть ли лучший способ сделать это?
public static string MooseTextBoxLineFor<TModel,

TProperty> (это HtmlHelper htmlHelper, Выражение> выражение) {

  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 Ответ

3 голосов
/ 07 апреля 2011

Если сообщения проверки нет, помощник вернет ноль, вы вызываете ToString () для ноля, поэтому вы получаете эту ошибку.

Лично я бы сделал это, используя систему EditorTemplates в MVC, но если бы вы предпочли сделать это таким образом, я бы сделал что-то вроде:

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());
...