Если сообщения проверки нет, помощник вернет ноль, вы вызываете 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());