where Expression<Func<TModel, TProperty>> specifies a model property for which you are going to generate a hidden input. This expression looks something like model => model.Name. If I make a long story short, this expression is then used to generate name and id attributes for the generated html input

In your case, the expression that you provide generates an empty name which is invalid. This is the method that throws an exception (from MVC source code):