We would like to know this as well.
In general, we think the approach to show a modal dialog is wrong. Mostly because if i'm a content-editor, and i need to fill in a required XHtmlString property, there is no way to see that property in perspective with the rest of the page. So as a content editor, it would be very hard to see the full picture, and you probably end up filling the XHtmlString with dummy data.
I agree that using [Required] is not very user friendly. Especially when used on blocks used as page properties and as stand-alone. It’s not always that easy for editors to see the big picture, like Martijn mentioned
Two solutions right off the bat:
1: Add a validator class that implements IValidate<YourContentType> and the Validate method. If you return a list of validation errors with at least one item, save will fail and display your error message. It’s easy to localize messages this way as well, so that’s a nice bonus. if your validation passes you simply return Enumerable.Empty<ValidationError>() from the validate method.
2: Add a custom validation attribute and decorate your content model property with that one.
When we decorate a property as [Required], we are forced to enter this value upon creating this page (before we even get into the page). The screen that comes up is really ugly and non user-friendly. Is there any other way to make required properties behave like in CMS 6 - when you would get a error first when you tried to publish the page?