I couldn't figure out Why ErrorMessage was coming null. But fortunately it started working now. Now both hard coded error message and error message from resource bundle also works.
But there is one change in the above code for error message from resource bundle. Instead of ErrorMessage property user ErrorMessageString which will be populated by MVC if the message is to be fetched from resource bundle.
[AtLeastOneRequired("List1", "List2", ErrorMessageResourceType = typeof(Motorola.MWM.Web.Resources.MWMResource),ErrorMessageResourceName = "ERROR_MSG_KEY")]
public List<string> List1 { get; set; }
public List<string> List2 { get; set; }
public override IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
{
var rule = new ModelClientValidationRule
{
ErrorMessage = ErrorMessageString(Instead of ErrorMessage - which should be used only for hardcoded error messages),
ValidationType = "atleastonerequiredlist"
};
rule.ValidationParameters["properties"] = string.Join(",", _properties);
yield return rule;
}