请在这件事上给予我帮助:
我有具有枚举类型属性的模型。此属性是必需的,但在 View 上初始值必须为空。会显示水印..
如果我理解正确,那么模型将没有可为空的属性。但是 viewModel 将具有可空性。这是正确的方法吗?
在这种情况下看起来像:
另一种方式是:
模型将具有可为空的属性和必需的验证:
最佳答案
让(域)模型使用不可为空的枚举表明该值必须具有用于用例和/或数据完整性的有效值。
在 UI 上要求允许无效值(初始值或其他值)将导致以下两种情况中的一种:
当 View 发布一个空值(通过专用 ViewModel)并执行检查以确保其不为空(我假设用户从选择框中选择“请选择”值)时,服务器将响应一条错误消息,说明某事比如“请选择一个有效的值等等等等”。
或者,服务器将允许来自 View 模型的 null 并将域模型属性默认为某个预先确定的合理值。
以我的经验,这种设置会导致令人沮丧的用户体验,因为让 UI 呈现一个无效的选择选项,该选项仅在提交时反馈(或使用某些前端/客户端验证)相当烦人(尤其是在长表单上等)。
也许您最好重新考虑该要求,以便 UI 仅显示有效的枚举值以供选择,并可选择将默认值设为合理值。
话虽如此,如果您真的希望 UI 没有有效的初始值,那么请创建一个具有可为空版本的 View 模型,并按照您的建议在服务器上进行验证。至于用可空值更改(域)模型,您似乎已经担心它不“符合现实”,考虑到您已经提到这是一个仅 UI 的要求,这是一个很好的冲动,因此将细节放在其中分层并使您的域模式尽可能接近现实,以满足您的用例和/或业务需求。
关于c# - 模型需要,但 View 最初为空字段 - MVVM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40497496/