Asp.net mvc ASP.NETMVC模式

Asp.net mvc ASP.NETMVC模式,asp.net-mvc,Asp.net Mvc,我有一个视图,当模型填充了数据并且模型完全为空时,可以访问该视图 当模型为空时,表示用户单击了“新建” 目前,我得到了一个NullReferenceException,因为模型中显然没有任何内容。如果我将一个对象传递给视图,那么浏览器就会冻结,因为该对象中包含空项 是否有更快/更好的方法来代替: MyObject myObj=新的myObj(); myObj.InnerObj=新对象(){data=..}; … 我希望这是有意义的:)您可以使用以下模式: 创建一个子类MyObject,该子类具有

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

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

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

是否有更快/更好的方法来代替:
MyObject myObj=新的myObj();
myObj.InnerObj=新对象(){data=..};
…

我希望这是有意义的:)

您可以使用以下模式:

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

public sealed class NullObject : MyObject
{
    public object InnerObj { get; private set; }
    public NullObject()
    {
        InnerObj = new Object { ... };
    }
}

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

@if(Model.Property != null)
因此,如果“创建”和“编辑”只有一个视图,不同之处在于模型中属性的总体,请使用“如果”测试这些属性,然后相应地编写代码

我们最终实现的一个更好的解决方案(我认为)是一个
enum
,我们称之为
“EditState”
,它有两个值:
'create'
'edit'
。将
EditState
设置为viewModel中的属性。设置或检查其值并相应地渲染视图(使用“创建”或“显示”输入,或以您设置的方式)。这是区分创建流和编辑流的一种简单易读的方法