0

我有一个视图,当模型填充数据并且模型完全为空时,可以访问该视图。

当模型为空时,表示用户点击了“新建”。

目前,我收到 NullReferenceException 异常,因为 Model 中显然没有任何内容。如果我将一个对象传递给视图,那么浏览器就会冻结,因为该对象内部包含空项。

有没有更快/更好的方法来代替: MyObject myObj = new MyObj(); myObj.InnerObj = new Object(){data = ....}; ...

我希望这是有道理的 :)

4

2 回答 2

1

您可以使用NullObject模式:

创建一个子类,MyObject该子类具有预先填充的所有属性和有目的地不实现任何行为的方法。例如:

public sealed class NullObject : MyObject
{
    public object InnerObj { get; private set; }
    public NullObject()
    {
        InnerObj = new Object { ... };
    }
}
于 2012-09-04T11:17:31.517 回答
0

这可能不是最聪明的处理方式,但我有时会将依赖模型的代码包装在视图中

@if(Model.Property != null)

因此,如果您对“创建”和“编辑”只有一个视图,不同之处在于模型中的属性数量,请使用“if”测试这些属性,然后进行相应的编码。

我们最终实现的一个更好的解决方案(我认为)是一个enum我们"EditState"用两个值调用的解决方案:'create''edit'. 在viewModelEditState中创建 a 属性。设置或检查它的值并相应地渲染视图(使用用于创建的输入或显示,或者您正在设置它。)这是区分创建流程和编辑流程的一种很好且易于阅读的方式。

于 2012-09-04T15:42:44.050 回答