请帮助我:
我的模型具有Enum类型的属性。此属性是必需的,但在View初始值必须为空。将显示水印..
如果我理解正确,那么模型将不具有可空属性。但是viewModel将具有可空性。这是对的吗?
在这种情况下看起来像是:
其他方式是:
模型将具有可空属性并需要验证:
答案 0 :(得分:0)
让(域)模型使用不可为空的枚举表明该值必须具有用例和/或数据完整性的有效值。
要求UI允许无效值(初始或其他)将导致以下两项内容之一:
当View发布空值(通过专用的ViewModel)并执行检查以确保其不为空(我假设用户选择"请从选择框中选择"值)服务器将回复一条错误消息,上面写着"请选择一个有效的值,等等等等#34;。 或者,服务器将允许视图模型中的null,并将域模型属性默认为某个预定的合理值。
根据我的经验,这种设置会导致令人沮丧的用户体验,因为让UI呈现无效的选择选项,仅在提交时进行反馈(或使用某些前端/客户端验证)是相当烦人的(特别是在长形式上等等) )。
也许您最好重新考虑该要求,以便UI仅为选择提供有效的枚举值,并可选择使默认值成为合理的值。
话虽如此,如果你真的希望UI没有有效的初始值,那么制作一个具有可空版本的视图模型,并按照你的建议在服务器上进行验证。至于用可空的方式改变(域)模型,你似乎已经担心它不会对应于现实"考虑到您已经提到过这是一个仅限UI的要求,这是一个很好的冲动,因此将详细信息放在该层中,并使您的域模态尽可能接近现实,以满足您的用例和/或业务需求。