How to customize validation error message given by text-danger?
That's normally done in the ViewModel you want to return to the Controller:
public class SomeViewModel
{
[Required(ErrorMessage = "Your elegant error message goes here")]
public int ProductId { get; set; }
}